3个月前头条正式批笔试4道编程题只AC了2道,然后被刷了做了200多道还是太菜了,本来对字节不抱太大希望,毕竟后台竞争太大,而且字节招客户端开发比较多。后来看到有散招免笔试,抱着试一试的心态投了,然而几天过去毫无反应,20天后突然告诉我进行面试。9.10一面,9.12二三面,之后9.25晚上收到电话,拿到意向书。
字节跳动后端一面(纯技术面)
- 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?
- 数据库连接池介绍下,底层实现说下
- hashset底层实现,hashmap的put操作过程
- 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点?
- 说说B+树和B树的区别,优缺点等?
- 算法题,对一个链表进行归并排序,链表可能有环
- 怎么实现一个线程安全的计数器?
- 原子类AtomicInteger实现原理是什么?和你设计的计数器优劣比较?CAS怎么实现原子操作的?
- Java中的锁有什么?synchronized与Lock的区别?公平锁和非公平底层怎么实现的?AQS原理详细介绍一下?
- 你在项目中一般怎么调优JVM的呢?
- 说一下GC吧,什么时候进行Full GC呢?
- 你了解哪些收集器?CMS和G1。详细谈谈G1的优点
字节跳动后端二面(项目面+技术面)
- 了解哪些排序算法,讲讲复杂度
- 手撕归并排序
- Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?
- redis的hash数据结构最多能存储多少个元素
- 自己如何实现RPC?
- mysql默认存储引擎?MyISAM、InnoDB、MEMORY的区别
- 什么是幻读,如何解决
- 事务隔离级别有什么?通过什么来实现的?分别解决了什么问题?
- 乐观锁与悲观锁的使用场景
字节跳动后端三面(综合面)
- 介绍对你技术能力帮助最大的项目,重点讲架构设计思路
- 分布式全局唯一ID怎样来实现?
- dubbo的生产者如何发布服务,注册服务,消费者如何调用服务?
- dubbo负载均衡的策略有哪些?一致性哈希详细聊一下?
- 分布式session如何实现的
- 微服务你的理解?以及常用的微服务方案dubbo、spring cloud的比较?
- Kafka怎么保证数据可靠性?
- 数据库主从同步数据一致性如何解决?技术方案的优劣势比较?
- 分布式锁的实现方式你知道有哪些?主流的解决方案是什么?
- 聊人生的经历
- 聊印象深刻的人生的经历
- 说下技术方面或者生活方面你做得比较好的一个点和不足的一个点吧?
- 职业规划
总结
3次面试都面了1小时以上,有些问题自己也忘了,以下是这次面试的个人感受:
- 1面技术面,问得广又问得深且喜欢问实现和原理;
- 2面项目面,主要是项目和架构;
- 3面综合面,猜测是考察对知识的整体认知和对自己的学习方法、未来规划的认;
- 当然3轮面试都少不了的手撕代码(三面的算法题差点炸了)。
最后只想说,希望以上我的经历能给大家带来帮助,并且对每位阅读到这里的朋友送上一份福利,在此奉上我自己收集整理的[全套JAVA面试集]:基础+中级+高级等面试真题解析,SSM框架、分布式、微服务、调优:Spring、SpringMVC、MyBatis、ZK、Nginx、MQ、kafka、Redis、MongoDB、SpringBoot、Dubbo、SpringCloud等,以及设计模式、并发编程、网络、算法与数据结构等各方面的面试解析。
再者,如果你要去准备面试或者学习,可能光单纯的刷这些个面试题的作用还不能达到最佳效果,因此我将此阿里大牛手写整理的[Java进阶核心知识集]也一并奉献出来,只愿大家一举得Offer,跳个槽涨个薪。我也能攒波人品,一举两得,何乐而不为!
Java进阶核心知识集
最后只说一句:不管你是谁?不管你是要学习也好面试也罢,我都愿意将自己花了几个月整理收集的[全套JAVA面试集]+[Java进阶核心知识集]分享正在努力奋斗的你。