字节跳动 客户端开发提前批一面凉经

字节跳动的提前批,我在7月12号,差不多是赶在了最后时间投递的岗位,原本以为我这种转专业过来的菜鸡根本在提前批不能有面试机会,没想到第二天就给了一个面试机会。HR没联系上我的手机,直接邮件安排的时间。

时间:7月17号,40mins

总体印象:

面试官人特别nice,专业问题上特别喜欢问基础概念,如果只是照科背书的话肯定不行,至少要结合自己的想法能够进行复述。

上来先自我介绍,然后开始一些计算机基础的问题。

OS:

1. 进程之间的通信方式(信号量和共享内存, 都没有让我答到其他的管道啥的方式,直接追问信号量的相关概念)

2. 进程与线程工作原理以及区别

3. 物理内存和虚拟内存的概念是否有了解(没复习到,直接不会)

数据库:

1. 数据库内部数据的组织架构相关(答了MySQL组织方式主要是B+树,然后我介绍了平衡树、B树的特性,及B+树的特点相关概念,因为是突击的知识,把我会的全部说了,面试官点了点头就没深挖了)

计算机网络:

1. TCP三次握手是什么(如果没有第三次握手的话,会发生什么情况,这个地方我回答的是会造成客户端可能是很久以前就发送的第一次请求,如果没有客户端再次的发送,无法保证客户端还准备发送连接请求,可能已经下线了等情况)

2. http请求的全部过程

3. https的工作过程 (我只描述了公钥和秘钥)然后追问了我客户端和服务器端为什么不直接互相发送公钥私钥,我扯了些别的,没答道点子上应该是,然后面试官又反问了一下,我表示真的不熟悉了,然后下一题了

4. 栈和堆在内存上的实现方式? (内存管理这一块我真的不太会,赶紧去补了)

算法:(牛客网的在线编程,没有测试运行,)

1. 栈在数据结构上的实现方式

2. 让我设计一个单例模式,

还是我太菜了,没想到设计模式会这么样考察,挣扎了一会和面试官表示不会

3. 换了一题最小栈的设计(LC原题 https://leetcode-cn.com/problems/min-stack/)

就不赘述了,很简单,但是面试官很看中思考的过程,然后一定要问清楚实际的时间空间复杂度要求。

然后开始问优化,(空间优化,问清要求后,说明是在最小栈上优化,原数据栈不动)我当时想到的是最小栈中在底下的数如果小于了上面的元素,那么上面的元素就可以不需要入栈了,后面就没有再说,面试官也表示理解了,时间也差不多就结束了。

反问,我问了更推荐我去ios还是安卓,面试官表示都有很好的的发展哈,然后面试考察过程也可以看到没有太多具体到客户端的知识,都是计算机基础的知识(所以大家还是多多夯实基础吧,加油!)

最后小菜鸡我许愿一下二面吧。本身自己就是生化环材出生,转行的想法真的是今年才开始,准备的很不充分,也不抱太大希望,秋招还没开始,多积累几次面试经验也是极好的。

最后更新于