程序员

四面快手、终拿Offer,想告诉你的一些事情

2019-11-24  本文已影响0人  程序员技术圈

欢迎关注专栏:后端架构技术精选。里面有大量关于的Java高级架构知识点分享,还有各种面试趣闻以及程序员身边事,如有好文章也欢迎投稿哦。

快手高开及以上职级面试 是没有笔试或者机试的,所以从第一轮开始就是直接面对面试官。

一轮

主要考察对Java基础的理解和深入程度。

  1. 私有构造方法,避免外部new出对象;
  2. 保证唯一性;
  3. 提供一个全局访问点;

另外懒汉式双重检测的实现方式有三点需要注意的地方:

  1. 全局访问点必须是静态的,外界使用可以通过类直接调用;
  2. 在进入锁之后还需要校验;
  3. 保存单例例对象的私有变量一定要用volatile修饰,这个地方 可以多说一些,比如 volatile防止指令重排序,保证内存可见性(JVM层面 和 CPU层面 可以分别说)。volatile 这个地方能说的东西还是很多的,基本上可以与面试官再聊二十分钟了。
  1. 为什么要引入红黑树;
  2. 如何在红黑树中插入一个节点;
    对于这两个问题,首先 引入 红黑树的好处是为了提高查询效率,要说出O(log2(n)),但是 在提高查找效率的同时也在插入的时候更加耗时,那可以说一下为什么更加耗时,自然带出第二个问题,如何在红黑树中插入一个节点,比如当插入一个节点的时候我们会默认它是红色的(这个地方可以结合红黑树特点说一下我们为什么默认它是红色的,从黑色高度以及相邻两节点不同为红色入手),插入后如果父节点是黑色的 就不需要动了了,但假如是红色的,就需要进行左旋和右旋操作,如果很了解,可以细说左旋右旋如何实现,如果不不是很了了解,到此为止也ok。
    说到这里,我们忽略略了一个重要的点,就是链表转换为红黑树的条件,说出 链表长度到8(相当于红黑树开始第四层) 以及 数组大小达到64 就已经够了了,也可以进一步说一下 链表是如何转换为红黑树的。说完也可以说一下 ConcurrentHashMap中也是一样的,然后接下来就引入对ConcurrentHashMap的理解,比如在什么地方会涉及到线程安全问题以及ConcurrentHashMap是如何解决的,说说CAS,说完CAS再说说AQS,自由发挥吧。

二轮

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

  1. maven的熟练程度,比如问问 <scope> 有哪些类型
  2. Linux命令行的熟练程度,比如 问问 {} 和() 区别
  3. 消息队列列的熟练程度,比如问问Kafka分区,如何分区等等(因为我过往项目经验中写了kafka,所以才会被问及,如果写了其他消息队列,也可能会被问及)
  4. Netty,从NIO开始说 肯定是没错的,再说说Netty的实现方式,以及它除了IO之外还干了哪些事情。

三轮

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

四轮

HR面试。这一轮可以说是斗智斗勇的一个环节,会考察一些软技能、个人成长、职业素质,也会问一下期望薪资。

本次快手面经分享完毕,觉得有收获的朋友可以帮我点个关注与转发!

赠人玫瑰,手有余香,我是不那么正经的技术zhai,欢迎你的关注~

上一篇 下一篇

猜你喜欢

热点阅读