楼主毕业一年,而且是跨行做后台,没有实际项目经验,所以问的东西比较基础,分享给大家,如果有后续会继续更新,共勉。
头条:
一面:
1.讲一下之前做过的一个项目,项目没什么难度,所以没有深问
2.JVM内存模型
3.堆是一个什么样的结构
4.CMS垃圾回收的过程
5.CMS垃圾回收过程中会有几次STW的操作
6.根集包括哪些对象,为什么这些对象会作为根集对象
7.解释java中的锁升级
8.解释可重入锁的概念及原理
9.解释自旋锁的概念及原理
10.volatile关键字的使用场景及作用
11.mysql索引的数据结构,为什么用B+树而不用B树
12.解释mysql的聚簇索引和非聚簇索引
13.hash索引
14.mysql深分页怎么优化,不能分表分区
15.redis的持久化储存有哪几种,各自的特点
16.如果redis崩溃,rdb和aof选用那种进行恢复,为什么
17.redis怎么做分布式锁,有几种方法,redis作为分布式锁有什么优势
18.爬虫(简历有写)中数据怎么去重,如果超大数据量不借助外存又怎么去重
19.算法:寻找a字符串中完全包含b字符串的最短子字符串
二面:
1.kafka里边有几种基本角色,每个角色具体职责是什么
2.kafka里怎么保证高可用性
3.kafka里的rebalance是怎么回事,怎么触发
4.做的游戏里的设计模式有哪些,介绍一下
5.mysql里的聚簇索引和非聚簇索引,区别,使用主键索引和非主键索引查询时有什么区别
6.mysql里的事务隔离级别,具体含义,分别解决了什么问题
7.redis里的事务,与mysql事务的区别
8.手撕算法:一棵树,求最大同源路径(leetcode 687)
三面:
1.介绍游戏里自己负责做哪一块,有什么亮点
2.游戏服务器怎么提高自己的可用性
3.游戏怎么防外挂
4.select,poll,epoll,epoll的优势
5.redis的ziplist数据结构,越详细越好
6.redis复制的过程越详细越好
7.python的gil锁,什么时候会触发gil锁
8.进程和线程的区别,linux切换进程线程时具体做了哪些操作,越详细越好
9.协程了不了解,为什么轻量级,对比进程线程讲一讲
面试体验:
面试体验的话,感觉头条的面试官比其他两家的面试官要稍微严肃一点,难度也比其他两家大一些,不过终于还是给了hr面,希望能有一个好结果吧
另外,一面联系我的hr小姐姐声音真好听2333
小米:
一面:
因为我是跨行,面试官表示不知道问什么,面试大概如下:
1.你研究生时候发的论文讲一下吧
2.做题吧:
a) 二叉树,找距离最远的两个结点的距离
b) 一个二维地图(数组),每个格子的权重不一样,求从左上角到右下角的最小权重
c) 用java实现一个迭代器,然后讲了讲在并发的情况下需要怎么改进
二面:
面试官表示自己也是游戏跨行来做后台的,好吧,其实我目前是做游戏研发的
1.聊了一些目前做的游戏里的逻辑实现
2.java里边常见的垃圾回收器和垃圾回收算法
3.cms垃圾回收器跟g1垃圾回收器的区别
4.对比cms,g1垃圾回收器的优点有哪些
5.python里的垃圾回收机制是什么样的
6.大概介绍了一下自己了解哪些互联网后台的技术栈,到什么程度
7.做题:
a) 一维升序数组,定义一次左移为取数组最左侧的一个元素,将其放到数组的最右侧,现在给一个左移n次后的数组,求n,要求时间复杂度logn
b) 定义树的平均高度:树根结点到所有叶子结点的距离n的和,与所有叶子结点数量的比值,现在给一个root节点,求它的平均高度
面试体验:
小米的面试还是比较简单的,面试官人也很nice,说话都很实在,另外,一面的两道题应该是leetcode原题,二面的题应该是剑指offer上的吧,希望能进下一面吧…
等了两天没有等到小米三面的通知,大概是凉了,明明感觉自己应该都答上来了的,随缘吧= =
滴滴
滴滴的面试比较早,当时也没有记录,所以很多问题记不清了(尤其是一面= =),只挑一些还记得的写在这里吧
一面:
1.数据库索引结构
2.netty里的零拷贝介绍一下
3.概率题(数学期望):
a)52张扑克牌,花色牌和黑色牌各26张,一次性抽两张牌,求两张牌同花色的概率
b)一个岛上的人,如果生出女孩子就会继续生,一直到生出男孩子为止,求最后岛上的男女比例
c)三国杀的甄姬,从期望计算,使用技能时候能多抽几张牌
4.手撕算法:求树的两个结点的最低公共父节点
二面:
1.java的垃圾回收器和垃圾回收算法,了解哪些,讲一讲
2.java的有哪几种线程池,线程池有哪些参数
3.写一个sql,大概是分组后根据某个字段的和进行排序,取最大的几条结果
4.手撕算法:
数字用倒序的链表表示,比如12345会被表示成 5>4->3->2->1
现在有两个链表,求这两个链表表示的数字的和的链表
思路是这个,具体题目怎么叙述的记不清了,应该是leetcode原题吧
三面:
1.介绍自己项目里的亮点
2.项目里遇到了哪些问题,怎么解决的
3.红球白球各有五十个,放到两个盒子里,从中随机取一个盒子,再从盒子里随机取一个球,现在希望取到红球的概率最大,应该怎么放
4.估算一下抖音每天用户上传的短视频数量
5.手撕算法,用两个栈实现一个队列,并设计一些测试用例,说明设计这些测试用例的原因
面试体验:
滴滴最后三面凉掉了,还是挺可惜的,不过面试体验很棒,应该是三家里边最棒的,有答不上来的问题面试官也会安慰说没关系没关系,我们看下一个问题,而且第一次面试就面到了三面,给了我很大的信心。
我自己也很感谢滴滴的,没有滴滴三面给的经验,头条的三面大概率也不会过了= =
其他
最后,批评一下京东的hr,面经就不写了,一面凉凉。
因为我是在网上挂的简历,看谁联系我再决定是不是给对方简历。
其中有京东某部门的hr,在我给她简历之后很快就安排了面试。
结果面试体验很差,面试总共不到半个小时。
我本来投的是后台相关的职位,但是面试官全程在问我游戏相关的问题。
比如说游戏的寻路算法,游戏的服务器架构等等
完了告诉我说他们更需要一个经验丰富的同学,我的工作经历和他们不匹配……倒是没拖着,直接挂掉了。
真的挺无语的,要是说工作经历不匹配直接简历挂掉不就好了。
感觉上是被hr拿去刷绩效了,吃一堑长一智,大家尽量有内推还是走内推,至少不会被恶心到吧。
目前头条给了hr面,内推的朋友的说差不多稳了,如果能拿到offer我会直接去,所以上边应该就是我这次社招全部的面经了,我大概是从去年10月份开始准备,到现在4月份的话刚刚好半年, 其中感觉比较有用的内容大概如下吧:
1.Redis实战(全书都看了
2.Kafka权威指南(前7章看了两遍吧
3.从paxos到zookeeper(从其中挑了几章讲原理内容看了看)
4.大话设计模式(迅速地过了一遍)
5.java并发编程实战(大概看了一遍,没看懂= =
6.高性能mysql(这个其实最近没看过,毕业前看的,到现在仍然觉得受益匪浅
7.流畅的python(看了两遍
8.圣思园张龙jvm虚拟机教程(b站,现在貌似被删了
9.圣思园张龙netty并发编程
10.王道考研的操作系统视频(b站
11.张铁蕾的redis底层数据结构分析跟redis和zookeeper分布式锁比较(掘金上边的,看了好几遍,突击复习很有用
12.github上的面经大礼包(CyC那个
社招还是很辛苦的,不仅准备的时间不够充分,而且请假并不方便,面试只能安排在晚上,一天只能面一家公司一轮,对于一些晚上不方便面试的公司就不得不选择放弃,就我目前的了解的情况来看,今年因为疫情社招竞争程度相当激烈,所以尽量不要裸辞,业内认识的leader说他们那边的核心团队,真的是百里挑一,面试从早上排到晚上,推荐我的10月份再投,竞争压力估计会小很多。就我个人目前的情况来看,如果头条能过的话就去,过不了或者因为疫情不好进北京或者出了其他幺蛾子,就再试试美团跟阿里,都不行就再耐下心来学习,积累更多的东西,十月份再战。
最后,祝愿我自己顺利,也祝愿大家都能拿到满意的offer吧。
#字节跳动##社招##面经##Java工程师##小米##滴滴#