前言
宅在家里快两个月的在家办公模式基本告一段落。企业复工,大家的工作生活终于可以回归正轨,相信不少朋友已经走出家门,迎战跳槽季了。一些动作快的朋友可能已经拿到一两个 Offer 了。
那么,对于Java开发岗来说,到底该如何准备技术面呢?
其实,除了表达能力和面试技巧外,无非就从这几个方面进行准备:源码阅读、JVM、高并发,分布式、集群、中间件,微服务架构等。
下面是最新的字节跳动和美团的Java面试题,希望对大家面试有帮助!
字节跳动一面:
1.看过Spring的源码吗,开局暴击。
2.Class.forName()和ClassLoader.loaderClass()有什么区别,开局暴击*2.。
3.ConcurrentHashMap的原理,为什么是线程安全的,让你设计怎么实现读写安全
4.Mysql中有哪些索引,你能想到哪些作为索引的数据结构,HashMap,B+树,前缀树,面试官提示跳表
5.Spring事务传播机制的应用
6.线程安全的单例模式,写完DCL写静态内部类的时候写错了,汗
7.正向代理和反向代理
8.http是有状态的吗,tcp呢,为什么http是无状态的
9.RPC和微服务框架了解吗
总结:一面面了一个多小时吧,很多常见的面试问题就没列了,列的是以前没碰到过问题,感觉面试官很重视思维能力和总结能力,即对于一个设计中的原理很深刻并且能用于其他地方。
字节跳动二面:
1.先聊了聊项目
2.JVM
3.OOM问题和StackOverflow有什么区别
4.好像问了些网络方面的知识
5.思考题,64匹马,8个赛道,最少比多少场可以找出最快的4匹马?首先说15,后来想到了13,最后在网上搜的答案是11,挺有意思的一道题
代码题,也不难
总结:二面面试官项目方面聊的多一些,然后就是思考题和算法题,也差不多一个小时吧,当时从6点直接面到8点多,饭都没吃,突出一个惨
美团一面:
基本问的就是java基础,多线程,jvm,redis这些,大概一个小时左右吧
美团二面:
1.聊聊sychronized关键字,用法,底层实现,偏向锁,轻量级锁,自旋锁
2.聊聊偏向锁,轻量级锁的原理和过程
3.除了sychronized,还有啥,聊聊ReentrantLock,底层一个继承了AQS的实现类
4.聊聊AQS,volatile修饰的state,加锁过程,公平锁和非公平锁的实现
5.TCP和UDP的区别
6.三次握手和四次挥手的过程,为什么这样
7.聊聊ThreadLocal,为什么要用threadLocal,ThreadLocalMap中,key和value分别哪个是强引用,哪个是弱引用,我迷之坚持value是强引用。。。
8.线程的状态以及状态变化过程
9.CMS和G1的区别
10.聊聊Spring中的动态代理,实现了接口的用JDK动态代理,未实现接口的通过CGlib动态代理,动态代理和静态代理的区别
11.常用设计模式,策略模式的原理和应用
之后的话就是聊项目,做了哪些,遇到了哪些问题
代码题:两个链表代表的大数进行相加,我用两个栈分别保存链表,然后出栈的时候用头插法生成新链表,感觉时间复杂度没有最优,但是也过了
面试官介绍部门和业务的时候很热情也很详细,然后说等HR通知~
总的来讲,比起字节跳动,美团的面试稍微简单一丢丢,因为不会问的太底层,太发散,然后两家公司的面试官都很赞,很有耐心也很热情!
所有的面试题目都不是一成不变的,特别是像这种大厂,上面的面试真题只是给大家一个借鉴作用,最主要的还是给自己增加知识的储备,有备无患!
最后针对于上面的面试问到的知识点总结出互联网公司Java程序员面试涉及到的绝大部分面试题及答案做成了文档(300页pdf)分享给大家,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。