--2021/05/10更新--
- 经过第一次滑铁卢后痛定思痛,花两天时间刷完了《深入理解Java虚拟机》,又扫了几眼MySQL底层实现。于是一面来了:
- 一面:电话面(下面记的都是没回答上来的)
- 负载均衡是什么
- MySQL事务隔离、分表、3NF(课上刚讲,然而没听)
- http1.0 vs. http2.0 vs. https
一面大部分问题回答流畅,进入下一面。这次吸取先前经验,将没有回答出来的问题全部过了一遍。
- 二面:电话面(大约是全部问题)
- 自我介绍(语速太快,注意控制)
- http vs. https
- https的安全证书能否私人取得(不了解)
- 根据tcp的三次握手,怎样劫持服务器
- 从下载站点下载文件,怎样保证下载内容没有被篡改过,是来自官方的。考虑hash/校验和?
- 给定用户信息表,根据年龄性别查找表,有无必要建立辅助索引?
- MySQL底层数据结构了解多少?给Innodb扒光了。
- 进程vs.线程vs.协程?不懂协程,故将进程与线程的定义与特点与历史细致地讲了一遍。
- 并发:怎样建立一个并发环境下的counter?加锁,synchronized,CAS
- CAS? Compare And Swap,讲解原理
- 自己建立HashMap数据结构,怎样保证线程安全?
二面大致是pass,等待下一面。
感想:1. 计算机基础非常非常重要,数据结构、算法、计网、OS,这四者的重要性基本相等。但就开发岗被问到的问题而言,计网和OS占比更高。2. 二面的xgg非常nice,说话很和蔼,在我回答问题时会引导我甚至与我讨论。3. 尽量展现自己的特长。一方面展现自己性格的闪光点,另一方面自己精通的专业知识点要毫不吝惜地倾倒出来!
--Previous Experience--
我的情况
- 985大三,CS
- 数模x1, 校内科研x1, Java小项目x1
- 校友内推
我的规划是保研,因此申实习主要是想积累工作经历... 另外,我本来是偏AI方向的,但可能因为简历上写了“熟悉Java”,因此被推到Java开发岗(爆哭)。再加上之前没考虑过找工,leetcode也没刷过,所以只能7天之内从零开始了。。。
笔试/面试总结
- 笔试:80/200,进入一面
笔试第一题是字典映射问题,第二题是最大连续和子数组问题。第一题用python写,但大概因为数据太大,所以只过了60%。看第二题时时间不够,只能暴力贪心,过了20%。
笔试前千万记得熟悉机试上的IO格式! - 一面:进入二面
大约笔试一周后进行电话一面。这一周的窗口期用来复(预)习 Java 基础。面试官主要看我简历出题。问题包括但不限于:- 操作系统:看你学过OS,解释一下硬链接和软链接的区别;B+树的结构(忘了,没答出来)一定要复盘!
- 计算机网络:解释一下TCP的三次握手和四次挥手;解释一下ISO/OSI七层模型;TCP在哪个层;解释一下DNS域名解析过程;解释一下HTTP加载过程(这部分没看,没答出来)
- Java:解释syncronized原理和实现方式;什么是死锁;HashMap的实现方式和是否线程安全;hashcode()和equals()为什么要同时实现;设计模式(不会);JVM内存模型(不熟悉);GC回收算法(只回答出来一个标记)
- 数据库:这部分全不熟悉(学校连过程化SQL都没讲完啊!
- ... ...
这位面试官非常nice,一方面引导着我面试,另一方面他似乎更考察我的思维能力和问题解决能力。比如问GC回收算法时,我说当标记为0时清除对象,面试官于是问当两个对象互相引用时无法清除,该怎么解决?我想了一会,说用DFS找到这样一个没有外部引用的环。
- 二面:凉凉,被捞。呜呜呜!!!
一面一周后进行电话二面。这段时间由于课业压力大,完全没看Java,为本次面试的败北埋下了伏笔...
面试官首先向我介绍了他们部门的情况,然后我进行了约3min的自我介绍。接下来进入公开处刑的环节。- 你学过MySQL,讲一下数据在内部存储的原理。(胡扯了一堆,不太行
- 你说自学过Java,解释一下双亲委派(没看过,不会
这时面试官对我不太满意,说“你还会什么?”,我感到他十分不满意,于是我怂了...讲了比较熟悉算法和数据结构以及机器学习方面。 - 为什么选择学习Java:讲了比较喜欢Java的面向对象和封装性的优势,但是对于Java和Cpp在性能差异上的回答让面试官不太满意。
- 二叉树、红黑树、二叉平衡树的差异:过
- HashMap的实现方式,为什么要用红黑树
- B+树的定义:一面已经考过,但由于没有复盘,这次没有答上来。血的教训!
二面完成后,面试官说约一周后出结果。但一个小时后,我的个人中心状态已经变成“已回绝”,并且多了一个自主投递流程。
总结
- 面试前一定要做好充分的准备!多刷题多看面经
- 一定一定要记得复盘! 一面二面的题目相关性很小,可能毫无关联也可能大量重合!而且面试也是查漏补缺的过程,那些问到却未答出的题目,都是薄弱的知识点。
接下来就等被捞通知吧...这段时间我一定好好复习Java(哭)
祝大家都能收获满意的Offer!
全部评论
(2) 回帖