第一次进字节三面...之前都是一面或二面就挂了,所以一二面完事之后都没写面经。
一二面是时间都有点久了,所以凭记忆记得可能有点不全。
一面(3/25)
一面面试官看着就是一种比较累的状态...自我介绍和项目经历介绍后问的问题挺八股文的。
比如java线程的run方法和start方法有啥区别;
class ThreadA { @Override public void run() { System.out.println("Hello World"); } } public static void main(String[] args) { ThreadA t = new ThreadA(); t.run(); }
和
public static void main(String[] args) { ThreadA t = new ThreadA(); t.start(); }
输出结果有不同吗?
java中线程之间同步有什么方法?
java中保证线程安全有什么方法?
说一下volatile和synchronized的原理;
说一下自旋锁和轻量级锁的原理;
数据库的索引种类有哪些,hash和B+树都有什么优势和缺点;
数据库的锁和MVCC;
然后出了一道sql,好久没写sql最后没做出来...
然后又出了一道合并k个数组,让我先说一下思路,我就按照合并k个链表一样的思路说了一下,然后问我复杂度多少,平时刷题和上课的时候都没分析过复杂度...这里懵了,最后也没分析出来。面试官看我实在分析不出来就说你先写一下吧。
写完跑了一下结果倒是没问题,面试官吐槽能写出算法咋还分析不出复杂度...
最后感觉自己表现太差都没反问就结束了,当天没收到约面以为挂了,结果第二天中午也没收到感谢信,还以为是hr忘了这事又把简历锁了...结果下午收到了约二面的电话。
二面(3/30)
二面面试官倒是看起来好说话一些了,也聊了一会项目的事情。
一开始先让做一下算法,出了一道无序int数组,给定target,找arr[i]和arr[j],使得arr[i]*arr[j] = target,返回i,j,如果不存在返回-1,-1;
一开始往两数之和的思路上靠了,想了半天感觉有问题,然后面试官提示了一下arr[i] = target/arr[j]后还是没跳出两数之和的思路,最后面试官说要不先换个题吧。(面试完想了一下应该可以用HashMap,不过当时也忘了问空间复杂度是否有要求...
然后出了一道数组中第k大的数,写了快排的思路,然后又被问到算法复杂度,我说学算法导论的时候书上有证明但比较复杂,面试官说我觉得也不是很复杂啊,你分析一下,这不就是第一次是n,第二次n/2 blabla,然后我写了个累加和,心想我都三年没看高数了这要咋弄...懵了一会面试官说可能时间不够推出结果就先算了,先聊一下别的吧。
又做了两个sql;
student(id, name) class_score(student_id, class_id, score) 1 1 80 1 2 85 .... 1. 总分前三学生姓名 2. 所有课程都及格的人数
然后就是八股文了。
进程和线程的区别;
数据库索引类型有哪些,B+树有什么优势?
TCP和UDP的区别;
tcp三次握手的过程;
http和https有什么不同?
看你之前的项目用过redis,能说一下redis的数据结构吗?key都是string,value可以是string、list、HashMap、sorted set,不常用的还有hyperloglog,GeoHash。
GeoHash的原理你了解吗,能说一下吗?就是将世界地图分成32份,这样刚好是2的幂次方,表示的时候大小较合适,0-9加26的字母是36个字符,随便去掉4个(如果加上大写字母的话总的字符才62,不足2的幂次方),落到哪个区域就在字符串后加上该区域的字符,然后再在这块区域中进行划分,这样就可以通过一个字符串表示一个地点的位置。两个地点离得越近,他们的公共前缀就越长。
堆排序了解吗?堆的数据结构?堆排序的过程?你说的堆排序一开始的下沉操作总的复杂度是多少?(又没分析出来...
最后就是反问了,问了一下部门的业务和技术栈。方便说一下这次面试对我的评价和建议吗?感觉基础挺扎实的,不过不大明白是背的八股文还是真的理解了,虽然说算法是背+理解,但算法复杂度都分析不出来感觉不大应该...
虽然最后反问的时候感觉面试官不是很满意,但感觉其他地方答得还行所以也期待了一下三面,第二天中午没收到感谢信就问了一下内推的人说过了。
三面(4/2)
没想到能进三面,也没想到三面问的这么简单...
自我介绍和项目经历介绍,面试官对项目还比较感兴趣多问了一会项目。
然后问对平衡二叉树这种数据结构了解吗?说了一下AVL和红黑树的一些基础知识;
java的map中有用到红黑树,能讲一下为什么要用红黑树和HashMap的扩容过程吗?
B+树了解吗?B+树的应用场景能说几个吗?数据库的索引为什么使用B+树这种数据结构?
你们学校的算法课有讲过动态规划和贪心吗?课上没讲;
那你们算法课讲的什么内容呢?就排序和图,考试的时候全是图的证明题...
那你说一下在图中找两个点的路径用什么方法?
要不做一道图的算法题?别别别,我们算法课就讲了图的一些证明,算法题就算了...动态规划虽然课上没讲但我自己看过一些。
然后就出了一道0-9的环,问从X点出发,途径N个点回到X的方法数。CodeTop上有这道题,可以看一下。
三面总共就40分钟左右也是没想到的...最后就问了一下部门业务,说是和电商物流供应链相关的,还说好像要用java(听到这还挺疑惑的,字节不是都用go吗..);后续通知大概多久会有反馈?估计得清明节后了。
感觉三面是这三轮面试里答得最好的一轮,希望能给个hr面的机会了。
全部评论
(12) 回帖