CTO五轮面试真是太刺激了,之前看到好多面经难度极大,感觉运气还行,面试难度虽然挺大,但面试官人还都不错。而且面试完马上出结果,非常刺激!


本文分享给需要面试刷题的朋友,也祝愿大家顺利拿到自己想要的offer,这份资料主要包含了Java基础,数据结构,jvm,多线程等等,由于篇幅有限,以下只展示小部分面试题


2月16日下午1:00 一面(点击此处获取文档完整版

  • 自我介绍+介绍项目

  • 项目中难点及解决办法

  • Java线程的状态及转换

  • Java创建线程的方式

  • 创建线程池的方式有哪些

  • JUC包下的类,能说多少说多少

  • ReentranLock与sychronized的区别

  • volitile的内存语义,底层如何实现

  • 解释一下happens-before,有哪些规则

  • CurrentHashMap源码

  • MySQL的索引及区别

  • 算法题:顺时针打印矩阵

2月17日下午1:00二面,深挖项目为主(45min)

介绍项目,项目中的难点(15min)

  • MySQL是如何优化的,数据量有多少

  • 倒排索引与正排索引的区别

  • ElasticSearch的原理(倒排索引+TF/IDF)

  • Zookeeper用过吗,介绍一下

  • Zookeeper一般用在什么场景

  • 除了ZAB协议,在介绍几个分布式一致性协议(Paxos、Raft)

  • 线程池的几种拒绝策略及其应用场景

  • 大数据框架有哪些

  • LSM-tree应用在那些场景、优缺点

  • 意向工作的方向?大数据or开发

  • 写SQL:查询每个班级成绩排名前五的学生及成绩![]

2月19日下午3:00三面,全程没问技术,聊人生(40min)

  • 你对京东有什么了解,知道我们的技术栈吗

  • 你心中的top3公司(送命题)

  • 你意向的工作方向?大数据or开发

  • 还有几个问题不记得了~

2月22日下午3:00四面

  • 自我介绍,项目提问
  • Java集合类常用哪些,ArrayList与LinkedList区别;
  • HashMap底层实现,为什么扩容是2的幂次;如果想要线程安全该怎么用
  • JUC包下对哪些类了解,synchronized和JDK提供的锁区别;
  • CAS原理,ABA问题;
  • 锁升级过程讲一下;
  • volatile讲一下,为什么不能保证原子性
  • JVM内存模型,新生代有哪些区,作用是什么;
  • 如何判断对象是否可以被回收(1引用计数2可达性分析)
  • JVM常用垃圾回收算法,讲一下CMS原理
  • Redis常用数据结构;
  • 有序集合底层实现;
  • 查找排名在底层如何实现;
  • 如何用Redis实现分布式锁,可能遇到的问题和解决办法
  • 手撕一个二分查找

2月24日下午3:00 五面

  • 自我介绍,项目提问

  • 聊计网,TCP3次握手过程,第三次是否可以携带数据,如何避免SYN攻击(syncookies);

  • TCP四次挥手说一下,为什么要等待2MSL,第二次和第三次挥手是否可以合并(可以)。

  • 操作系统,进程、线程和协程的区别;如果创建很多个线程会有什么问题;进程间通信方式有哪些

  • MySQL索引如何实现,为什么用B+树不用B树二叉树;聚簇索引和非聚簇索引的区别;平时索引优化如何做,最左匹配原则;

  • 你的优点,你的缺点(面试官说我们缺点一样)

  • 你最近看的技术书籍,我提到《Java并发编程的艺术》看了三遍,面试官让我详细每一章讲了什么

  • 你对互联网行业怎么看

  • 如果你的绩效被打了C你会怎么办 (这个是一个很大的坑~)

总结:

祝大家能收获心仪的offer。