平时基本都在看牛油发的各种面经,对自己的春招作用很大,于是想写下京东的面经回馈给大家,顺便留下本菜鸡在这个春招里的一点痕迹。
广东某二本科班,无比赛无项目,学校带学院后缀的那种,至今没有面试官听过我的学校,这两个月不断挣扎,曾与阿里、腾讯面试官面对面讨论技术,最终成功斩获多家名企的感谢信,包括但不限于阿里、腾讯、字节、美团、网易,人称“感谢信收藏家”,收获感upup~
大概大二下学期我就意识到可能要凉,学校不占优,技术又差的一批,这样下去达成“毕业即失业”成就岂不是板上钉钉?
于是我把目标看向了春招,很多人可能觉得春招很早,这不是毕业生参与的事情嘛?恰恰相反,春招不仅仅面向应届毕业生,同时也是各大名企大肆招聘暑期实习生的时间,这个时间点你可不能错过。
暑期实习生一般具有以下几个特征:转正率高(相对日常来说)、实习生培养计划、转正周期短(一般两个月就可发起转正)、规模大、流程正式(一般暑期实习生的流程和正式校招相仿)。
其实暑期实习生留用是非常多的,秋招很大一部分的HC是被转正留用的实习生给占了,从另一方面来讲,就算转正失败,这段经历也是难能可贵的,在秋招中势必会得心应手,起码可以保证了offer的下限。
其次,我个人觉得实习是非常重要的,尤其是在比较大型的公司实习,大牛云集,规范化的流程,内部技术底蕴沉淀很足,以我个人为例子,我特别喜欢在空闲时间查看团队的线上故障记录wiki,上面都是一些前人非常宝贵的经验,例如一些面试中比较常问的慢查询排查和优化、内存溢出、频繁FGC、设计模式的实际应用等等,在下次面试中如果被问到,你就可以大声的喊出:“我可以!我能行!另外就是技术沉淀这一块,像我现在正在实习的公司内部非常多优秀的自研框架,自研的消息队列和RPC框架等等,都是已经放在了线上,而且承受住非常高的并发考验的框架产品,都非常值得去研究和学习,甚至有可能这款框架的架构师就坐在你旁边呢~
最后给我体会非常深刻的就是企业级项目的复杂度,太复杂太难了,一对比我之前写的项目可能连鸡毛都算不上(:泪目了
一面(视频面) 1小时30分钟
1、类加载机制概念、加载步骤、双亲委托机制、全盘委托机制、类加载器种类及继承关系
2、如何实现让类加载器去加载网络上的资源文件?怎么自定义类加载器?自定义的加载器还符合双亲委托机制吗?怎么打破双亲委托机制?
3、实例化对象的方式有几种?
4、由Object类的clone方法引申到深复制和浅复制的区别
5、反射的概念、用法、实践
6、Java内存模型和JVM内存结构
7、有一台4核8G的机器,该给JVM里的堆区和虚拟机栈分配多大的内存?(初始值、最大值、堆区年轻代和老年代的分配比例等等)
8、堆内存中的年轻代分配内存过少或过多分别有什么影响?复制算***导致Stop-the-World吗?
9、哪些参数可以设置JVM中的内存分配?
10、需要在线程范围内去共享一个变量,怎么实现?ThreadLocal源码实现、Key弱引用导致的内存泄露、怎么避免?
(这道题我一直理解成在多个线程之间去共享变量,说了volatile,面试官一直说不对,后来我猜意识到是在线程范围内共享变量…)
11、volatile的作用、实现机制、缓存一致性实现
12、AtomicInteger原子类的作用、源码实现机制
13、CAS无锁算法概念、源码实现机制、Unsafe类源码延伸到HotSpot虚拟机对应的C++方法再延伸对应的汇编函数
14、ReentrantLock中非公平锁的源码实现、AQS源码实现、为什么需要自旋锁?锁膨胀的过程?
15、线程池的使用场景、常用参数、拒绝策略
16、阻塞队列的种类、底层数据结构和使用场景
17、手写BIO的Socket编程、BIO和NIO的区别
18、Netty线程模型、零拷贝、粘包拆包、心跳机制、Pipeline源码
19、责任链模型、策略模式、模板模式、设计模式里的原则
20、Top K问题,找到上千万个数字中从大到小的前10个数字
21、MySQL中的聚集索引和稀疏索引区别、索引是越多越好吗?什么样的字段适合建索引?
22、索引覆盖和回表的概念、怎么避免回表?
23、为什么采用B+树而不用AVL树?
24、事务的底层实现
25、MVCC的概念及实现机制
26、Redis为什么这么快?为什么不用多线程?
27、哈希表查询的时间复杂度、哈希冲突的解决方法?
28、Sorted Set的应用场景、跳表的实现、查询和插入的时间复杂度?
29、Dubbo的应用场景、底层通信组件、服务降级、负载均衡、接口暴露、序列化方式、让你实现一个简单的RPC框架你会怎么做?
30、Zookeeper的应用场景、watch机制、领导者选举算法、ZK实现分布式锁
31、对称加密、非对称加密、数字证书、HTTPS的连接过程、SSL加密一定安全吗?SSL在哪一层实现加密?
32、OSI七层协议?路由器工作在那一层?HTTP、TCP、FTP、DNS工作在哪一层?
33、ARP协议的作用及流程
34、Git的操作、代码冲突的解决方法
35、Redis的缓存穿透、缓存雪崩、数据一致性的解决方案
36、Elasticsearch的倒排索引、index和document的概念、脑裂问题
37、RabbitMQ应用场景、生产/消费者和发布/订阅模式概念和应用、数据丢失问题
38、商品超卖的解决方法、MySQL乐观锁和Redis乐观锁
39、手写SQL:有一个成绩表,表里有三个字段分别是姓名、课程和成绩,求课程平均分大于85分的学生姓名和平均成绩。
40、算法:写归并排序和快排、分析时间复杂度、怎么评定是不是一个稳定的排序算法?
二面(视频面) 50分钟
1、Hashmap和Concurrenthashmap
2、线程池核心参数、拒绝策略
3、SynchroQueue的应用场景? 可以存几个元素?
4、Lock的公平锁和非公平锁的怎么实现的
5、说说AQS
6、Lock是怎么给线程分配锁的?
7、Spring Bean的生命周期
8、说一说Spring的AOP
9、SpringBoot启动过程的源码
10、怎么学习开源框架
11、Netty零拷贝?心跳机制?粘包拆包?
12、ASM怎么实现cglib
13、说一说数据库有哪些索引?聚簇索引和非聚簇索引区别?什么是索引覆盖和回表?什么是索引下推?
14、二叉树和B+树的区别
15、了解哪些常用的Linux命令
16、Linux根目录下有哪些文件夹
17、JVM常用命令
18、jstat的常用参数
19、进程通信方式
20、Linux线程调度方式
21、Linux的缓存有几级
22、Redis的删除策略?
22、什么是分布式?分布式和微服务有什么联系?CAP理论听过吗?为什么CAP理论最多职能满足两个?
23、算法:环形链表入口
HR面(电话面) 18分钟
没有自我介绍,直入主题。
1、你觉得笔试难度怎么样?
2、我看你前几轮的综合成绩都蛮高的,未来想在北京发展吗?
3、像广州深圳杭州互联网公司都很多,为什么投了北京的岗位呢?
4、我可能比较直白一点,你的学历在我们这些候选人里面是比较低的,你觉得你的优势在哪里?
5、想过考研吗?不考研的话未来可能几年后你觉得有能力能胜任这些工作吗?
6、你觉得为什么自己没有上一些比较好的学校?专业是自己选的吗?
7、实习时长?给前两轮面试官一个评价?
最后我反问了一些部门相关的信息,在这个过程中类似于压力面吧,大家可以从问题看到,都是问的比较犀利的,其实我完全可以理解,当时电话里我也一直说没关系没关系,我知道自己学历不占优势,甚至是劣势,从企业的角度看,有那么多985211的同学为什么要录取你呢?
这是很正常的利益权衡,最后真的很感谢狗东能给这次机会,尤其是非常感谢一面和二面面试官,在一面的自我介绍的时候我就调侃,自己学历这么差竟然能被捞出来面试,面试官就安慰我说没关系,我们这里比较看重能力,然后全程面试非常温和,我不懂的地方也和我详细的讲解,最后还给了我非常多的建议,真的超级赞,二面应该是一位leader的角色,头发很少哈哈哈,但是同样待人非常温和,不出意外应该是未来的leader了,最后同样也给了我非常多的意见,非常感谢!
从三月初投简历到现在五月底,能够给面试机会的企业寥寥无几,尤其是今年疫情的原因,找工作变得难上加难,这里非常感谢给我第一个offer的蘑菇街,让我在之后的面试更加游刃有余,甚至还拒掉了一些面试,今年春招一共拿到了京东、唯品会、蘑菇街、Thoughtworks四个offer,不出意外应该是七月份前往京东,做一个小小的北漂族,顺利的话希望能够在狗东转正,先为秋招垫下一个良好的开端,秋招加油!