北京Java研发面经:滴滴、美团、网易、58赶集等
前言
先吐槽下滴滴面试安排,如果你通过了一面,那么就优先安排后面的面试,所以导致还没一面的人就得一直苦等。那会儿我是下午一点去的,大概到了快4点才进行一面,后面就嗖嗖嗖地过关斩将到了hr面,也算是运气不错吧。
交叉1面
- 垃圾回收算法
- (代码)01矩阵,相邻的1是一个岛屿,找出所有岛屿数(递归解决)
- 有关注过开源社区吗,都看过哪些源码
- AtomicInteger实现原理(CAS自旋)
- synchronized和reentrantLock区别
- 介绍spring的IOC和AOP,分别如何实现(classloader、动态代理)
- redis如何处理分布式服务器并发造成的不一致(本身就是单线程序列化的隔离级别),如果数据库不提供隔离呢
- OSGi的机制(因为简历写了)
交叉2面
2个鸡蛋,100高的楼,最少的次数测出鸡蛋碎掉的临界层,没碎的鸡蛋可以反复用(没做出,应该是14次,网上有解法)
- 大量字符串找出数量最多的K个,考虑内存放得下和放不下两种情况
- 解释mysql索引、b树,为啥不用平衡二叉树、红黑树(磁盘和内存的存储方式不同)
- 垃圾回收算法,为什么要分代处理
- 跳表(不熟,没继续)
- IO(不熟,没继续)
- epoll(不熟,没继续)
- 一致性hash
- zookeeper如何同步配置(不熟,没继续)
- 讲下java锁的原理
- ConcurrentHashMap原理
BOSS面
- (代码)最长回文子串
- GC停顿原因,如何降低停顿
- JVM如何调优、参数怎么调
- 如何用工具分析jvm状态(visualVM看堆中对象的分配,对象间的引用、是否有内存泄漏,jstack看线程状态、是否死锁等等)
- 进程和线程区别
- epoll和select区别(不熟,没继续)
- 解释mysql索引、b树
hr面
- 五个词来描述自己
- 长期的计划
- 兴趣爱好
- 期望薪水
- 对岗位的要求
- 已经拿到的offer
- hr告诉我滴滴主要还是用c和php(看来我这次算是误打误撞),然后和我说php多快呀,多容易呀,要不要到碗里来?呵呵呵
java岗面
- (代码)含Double数据的list,找出最长连续递增序列的长度(连续递增比较简单,看你代码质量)
- 找出最长递增子序列的长度,说思路(dp算法,复杂度O(n))
- mysql中int的最大填充长度(我记得是255,被告知是错的),varchar不同编码下的存储字符个数
- 写SQL,多表连接查昨天的第二多的值
- js题,考察闭包
美团
分析源码
分布式架构
性能优化
Java面试避坑指南
Java面试题集锦