《最新面经》— 四面快手终收offer总结

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

快⼿⾼开及以上职级⾯试 是没有笔试或者机试的,因此从第⼀轮开始 就是直接⾯对⾯试官。面试

 


 

1快手⼀轮 面试

 

主要考察对Java基础的理解和深⼊程度。数据结构

 

  • Spring 原理,Spring IOC、AOP。架构

 

这个问题 最好能够多说⼀点,⽐如 对于IOC,不妨把Bean 如何加载、如何初始化以及如何注册到 IOC容器中的详细过程说⼀下, 涉及BeanDefinition、BeanFactory也深⼊细节聊⼀下。框架

 

  • ⼀个请求过来在Spring中发⽣了哪些事情。maven

 

这个问题 不妨把 ⼀个请求过来 在TCP层⾯上 建⽴链接、操做系统如何处理链接、Web容器接收到 链接对象后作了哪些事情、Spring 如何对接收到的请求进⾏处理 都说⼀下,固然最终仍是 落在 Spring 容器内部如何处理⼀个请求,这个过程⼀定要说清楚,须要体现细节。在说前⾯的内容的 时候,能够放⼼ ⾯试官不会打断你。ide

 

  • ⼿写⼀个栈,实现 push,pop⽅法,以及 max(获取最⼤的元素) ⽅法,要求时间复杂度为 O(1)。 优化

 

这是⼀个考察数据结构的问题,⼀⽅⾯须要候选⼈对数据结构有所了解,⼀⽅⾯ 也须要候选⼈对 代码有驾驭能⼒(毕竟要⼿写代码)。⾯试官会给⼀定的时间,在这段时间⾥ ⾯试官不会打扰你,并 尽量为你提供⽅便,⽐如 签字笔很差⽤ ⾯试官会帮你更换。据我个⼈经验,凡是⾯对须要写代 码的问题,都不要急着放弃,静下⼼来,仔细思考,都是能够写得不错的。若是没能写出来,⾯试 官会问你实现思路,若是你的思路很优化,⼀样能够过了这道题,可是前提是 你的代码 不能⼀⾏ 都不写。 操作系统

 

对于数据结构的考察的话,我建议 看⼀下 jdk中对于 List、Stack、Tree、Set 的实现,⽐如 ⾄少 你要知道 若是让你实现⼀个单链表 你会如何实现,⽐如 你可能会定义⼀个Node节点,⾥⾯有 当 前节点的key和value,还有对于下⼀个节点的引⽤。若是熟悉jdk对于各类数据结构的实现,这道 题是很容易过的。线程

 

  • JVM内存结构 对象

 

这个问题 须要你能画出JVM内存结构的图,画出 ⽅法区、堆、程序计算器、虚拟机栈、本地⽅法 栈,并说出每⼀个部分具体是什么做⽤,⽐如 哪些是线程共享的,哪些是线程独享的,哪些地⽅ 存放了什么数据,为何会这样存放,哪些虚拟机参数对这些空间⼤⼩是有影响的,能够如何配 置。这些都⽐较常规。

 

  • ⼿写⼀个单例 

 

这个基本上⼤多数公司都会考察的。要写⼀个 基于懒汉式的 双重检测的 单例。单例有三个⽐较关 键的点,⼀ 是 私有构造⽅法,避免外部new出对象;⼆是 保证惟⼀性;三是 提供⼀个全局访问 点。

 

另外 懒汉式双重检测的实现⽅式 有三点须要注意的地⽅,⼀是 全局访问点必须是静态的,外 界使⽤能够经过类直接调⽤,⼆是 在进⼊锁以后还须要校验,三是 保存单例对象的私有变量 ⼀定 要⽤volatile修饰,这个地⽅ 能够多说⼀些,⽐如 volatile防⽌指令重排序,保证内存可⻅性(JVM 层⾯ 和 CPU层⾯ 能够分别说)。

 

volatile 这个地⽅ 能说的东⻄ 仍是不少的,基本上 能够与⾯试官 再聊⼆⼗分钟了。

 

  • HashMap

 

 

  • JVM四种引⽤类型 

 

这个问题⽐较简单,强引⽤、弱引⽤、软引⽤、虚引⽤,说⼀下它们各⾃的特色和GC对它们的不 同处理⽅式,再说⼀下 常⻅的应⽤场景 或者 jdk的实现中 对它们的使⽤,⽐如 ThreadLocal 的 静 态内部类 ThreadLocalMap,它的Key是弱引⽤的,也能够说⼀下 在你的理解中 为何它是弱引 ⽤的,假如不是 会怎么样。

 

  • SpringBoot 启动过程 

 

这个主要是从它基于Spring的事件发布和监听机制开始提及 就没什么问题。

 


 

2快手⼆轮面试 

 

继续考察Java基础,和对应⽤技术的掌握,⽐如过往项⽬中所⽤的⼀些框架,在这⼀轮中会被问到。

 

  • 类加载过程 

 

加载 连接 初始化,连接⼜分为验证 准备 和解析,每⼀个阶段 是作了什么 要说清楚。

 

  • Object a = new Object();

 

这⾏代码作了哪些事情,须要从类加载开始提及,这个至关于上 ⾯问题的延续,因此 ⼀定要清楚 每⼀个环节 作了哪些事情的,不然 这个问题 不可能说清楚。说 完类加载的过程 再说⼀下 开辟内存空间、初始化内存空间 以及 把内存地址赋值给变量a,接下来 能够进⼀步说⼀下 JVM 或者CPU层⾯对指令的优化,以及 在某些时刻 咱们须要 避免它作这样的优 化,⽐如 在单例中咱们的实例须要⽤volatile修饰 避免指令重排序(能够说⼀下 在new⼀个对象的 过程当中若是指令重排序了 会致使什么结果)。

 

  • 接下来主要是对过往项⽬中⽤到的框架、⼯具的考察

  • maven的熟练程度 

⽐如问问有哪些类型 

  • Linux命令⾏的熟练程度 

⽐如 问问 ${} 和 $() 区别 

  • 消息队列的熟练程度 

⽐如问问Kafka分区,如何分区 等等(由于我过往项⽬经验中写了kafka,因此才会被问及,如 果写了其余消息队列,也可能会被问及) 

  • Netty 

从NIO开始说 确定是没错的,再说说Netty的实现⽅式,以及它除了IO以外还⼲了哪些事情。

 


 

3快手三轮面试 

 

这⼀轮主要考察对于过往项⽬的业务理解

 

  • 根据过往项⽬经验 依次介绍业务 

 

这就须要 在⾯试以前 把⾃⼰的作过的项⽬ 好好总结⼀下,它们主要作的业务是什么,解决了什么 问题,架构是什么样的,以及你在其中作了哪些⼯做。这个地⽅⼀定要准备充分,⾄少要能扛得住 ⾯试官三连问。不然会被认为 你不太清楚大家以前作的究竟是什么,那你在业务能⼒⽅⾯ 多是 不太match的。

 

  • 你有什么问题想问⾯试官的 

 

这个地⽅ 因⼈⽽异,但⽆论怎样,都不要什么都不问,⾄少你要表现⼀点对于岗位的兴趣吧。⽐如问⼀下 公司业务,团队构成,技术栈,以及你所应聘的这个岗位 ⼤概作哪些⼯做

 


 

4快手四轮面试

 

HR⾯试。这⼀轮能够说是⽃智⽃勇的⼀个环节,会考察⼀些软技能、个⼈成⻓、职业素质,也会问⼀下 指望薪资。

 


 

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

相关文章
相关标签/搜索