.25 19:30 - 20:30 一面

网络:

  • tcp三次握手失败,tcp会如何操作?

答:

这个问题的本质是判断我们对tcp的状态转换是否能有比较深刻的理解。只要理解了下面的状态转换图,很容易回答上述问题。

在此,将《TCP/IP协议族》中每一个状态的转换伪代码整理下:














第58行指明了当第三次握手失败时的处理操作,可以看出当失败时服务器并不会重传ack报文,而是直接发送RTS报文段,进入CLOSED状态。这样做的目的是为了防止SYN洪泛攻击。

  • 输入URL流程

答:

1.URL解析:

2.DNS查询

3.建立TCP连接:

4.发送HTTP请求

5.服务器永久重定向

6.服务器处理请求

7.返回响应结果

8.浏览器接受响应

9.HTML解析

10.断开连接


篇幅所限,这里就不展开讲了,简单提一下,不理解具体原理的同学可以看看我这份《计算机网络面试题集》,在里面会有详细的论述


Java:

  • 抽象类和接口的区别,使用场景

答:

区别:

① 抽象类有构造方法,接口没有构造方法

② 抽象类可以包含普通方法,接口中只能是public abstract修饰抽象方法(Java8之后可以)

③ 抽象类只能单继承,接口可以多继承

④ 抽象类可以定义各种类型的成员变量,接口中只能是public static final修饰的静态常量

使用场景:

1.抽象类的使用场景

既想约束子类具有共同的行为(但不再乎其如何实现),又想拥有缺省的方法,又能拥有实例变量

如:模板方法设计模式,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中某些步骤的具体实现。

2.接口的应用场景

① 约束多个实现类具有统一的行为,但是不在乎每个实现类如何具体实现

② 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。

③ 实现类需要具备很多不同的功能,但各个功能之间可能没有任何联系。

④ 使用接口的引用调用具体实现类中实现的方法(多态)

  • 枚举类的使用场景

答:

1. 单例

2. 有穷对象的集合


实习项目:

  • 介绍一下微众的项目
  • 什么叫CICD
  • 做了什么事情,为什么用Github Actions,不用Jenkis,有什么区别吗

项目:

  • 运行流程
  • 架构设计
  • 如果输入一个请求,怎么跑的

项目这块根据自己的项目经验答就行了,我当时答的是一个在线会议系统项目,




线程并发:

  • 什么叫同步异步

答:

同步,就是A要从B得到一些结果,A等着B出结果,B做不完A就一直等着。同步就相当于顺序执行。

异步,就是A要从B得到一些结果,A告诉B它要结果,然后做自己的事,B做完后通知A结果是xxx。异步的意思就是非顺序执行的。至于执行的顺序是什么,这是不确定的。而某个任务要执行到什么时间结束,这要看分给这个任务的CPU时间。时间到了就结束(分时系统,大部分情况都是这样)。

  • 什么叫阻塞非阻塞

答:

当你把水放到电水壶里,按下开关后,你可以坐在水壶前面,别的事情什么都不做,一直等着水烧好。你还可以先去客厅看电视,等着水开就好。

对于你来说,坐在水壶前面等待就是阻塞,去客厅看电视等待就是非阻塞。

阻塞请求:A调用B ,A一直等着B的返回,别的事情什么也不干。

非阻塞请求:A调用B,A不用一直等着B的返回,先去忙别的事情了。

所以说,阻塞指的是调用方一直等待别的什么事都不做;非阻塞指的是调用方先去忙别的事情。

算法:

  • 合并有序链表
  • 简化Linux路径

这两道算法题还是挺简单的,也比较常见,面试之前就刷过,这里也不展开讲了,不会做的可以看看我之前刷题的一本手册


怎么白嫖应该知道了噻?

一面二面和HR面我就都不展开讲了,不然这篇文章太过冗长了,把面试官问的问题贴出来给大伙看看,不会的题可以自己去网上找找答案。

8.30 20:00 二面

实习项目:

  • 介绍一下微众的项目?介绍我参与的事情?
  • 什么叫CICD?
  • 遇到了什么困难?怎么解决的?

项目:

  • 介绍一下项目的架构设计
  • 讲解了我怎么设计负载均衡算法的,以及每种策略的适用场景
  • 注册中心是如何实现服务的发现和引入的
  • 注册中心能否处理容灾情况(不能,我都没有那么多服务器,哪里来的容灾功能)

Java:

  • 正则表达式(尬住了,这个没怎么用)
  • 引用传递和值传递的区别
  • Java 是面向对象的语言,你是怎么理解的,相对于 C 语言,你感觉有什么优势呢

网络:

  • 三次握手过程
  • 如果第三次握手没有回复会出现什么情况
  • 这种机制有什么缺陷吗(SYN 泛洪攻击)
  • SYN 泛洪攻击怎么解决

9.1 10:00 - 10:30 三面

实习项目:

  • 介绍一下微众的项目?介绍我参与的事情?
  • 什么叫CICD?
  • 遇到了什么困难?怎么解决的?

数据结构:

  • 给一个场景:有很多图片,然后我们需要对图片进行存储,以及查找,有什么数据结构比较适合?
  • 如果我要加速查询的速率,你要怎么设计?

架构设计:

  • 如果一台服务器,然后要对单机进行拓展,你要怎么设计后续的拓展工作?

操作系统:

  • Linux 怎么进行解包的?
  • 你刚才讲到里面有两个过程,一个是中断,一个是复制,你会怎么处理这两个过程,使其加速?(我扯了 Netty 的零拷贝机制,但好像不对,面试官说我的思路很有趣)

网络:

  • TCP 保证可靠性传输的手段有哪些?

面完不到半个小时,内推我的师兄就发微信来恭喜我,发现官网变成了等待 hr 面的状态。

这里要夸一波面试官,面试官在我讲的时候闭麦,安心听我讲完,对于我答得不是很好的地方也会指出来,nice!而且三面的面试官问我对网络通信是否感兴趣,那可太有兴趣了,不然我也不会去看 Netty 的源码hhh

9.7 11:00 - 11:30 hr面

聊天为主:

  • 地区
  • 职位考虑
  • 对于 offer 的选择
  • 成绩情况
  • 为什么不读研
  • 实习做了什么
  • 对于腾讯的看法
  • 更看重哪些方面

好了,就写到这里吧,今年我一直在有意收集面试真题,到现在总算是整理出来一份Java面试八股文,



需要Java面试八股文等资料的小伙伴们,点击这里即可