字节跳动提前批后台,一面面经

今天下午面了字节跳动飞书后台的一面,一共面了差不多一个半小时,面试官很耐心,问的有深度有广度。

首先是一段自我介绍

然后问的操作系统和组成原理相关的:

1、线程和进程的区别             答:进程有独立资源,线程是进程的子结构,共享一个进程的资源

2、设计线程和进程的目的      答:线程主要是为了充分利用CPU资源,在耗时操作的时候挂起I/O线程,CPU可以计算其他线程

3、在什么情景下使用多线程什么情景下使用多进程 (I/O密集型场景和计算密集型场景)答:想了半天,I/O密集型场景用多线程,不知道对不对

4、你知道哪些进程调度算法            答:FIFO、短作业优先、优先级调度、多队列优先级调度

5、死锁了解吗,是怎么产生的,如果发生了死锁,操作系统会怎么做    答:线程互相争抢资源,系统有死锁检测,根据资源需求矩阵,成环意味着发生死锁,通过释放资源来解锁,抢占式。

6、堆和栈的区别了解吗  答:不太了解,栈空间主要储存运行时申请的变量和函数调用,堆放一些固定量和全局量(不知道对不对)

7、堆在内存空间中和栈的位置关系    答:好像堆在下面

8、栈分配空间是从低地址向高地址还是高地址向低地址   答:栈应该是向高地址分配(大小端问题,确实没复习到,盲点)

9、并发控制   (讲了一下锁机制,结合自己的项目讲了一下读写锁)

这一段有些问题问的很笼统,在你回答完后面试官会就细节继续问下去,很考验知识广度和理解

接下来问了一些网络相关的

1、5层和7层网络模型说一下 答:OSI五层和七层

2、TCP是哪一层的   答:传输层

3、TCP数据包有哪些字段 答:记得有端口号、序列号其他不记得了

4、讲一下TCP建立连接和释放连接的过程  答:三次握手、四次挥手

5、TCP拥塞控制算法了解吗    答:慢启动、拥塞避免

6、TCP是怎么知道网络拥塞了的  答:应该是根据超时重传来检测,底层可能是ICMP

问完网络接下来就是问编程语言相关了,飞书团队好像技术栈是python和goland,而我说自己硕士期间主要用的python就主要问我python相关

上来先问了几个python2.7的问题,一下子就蒙了,赶紧说我用的都是3.5之后

然后问了一个ASCII和Unicode的区别,Unicode和UTF8什么关系   答:ASCII是一个字节的编码表,0-255对应字符,另外两个不太了解

3、迭代器和生成器了解吗  答:不太了解

4、GIL了解吗      答:全局锁,不能充分发挥多核算力,需要多开CPython解释器解决问题,等于多进程

5、dict的底层是怎么实现的    答:hashtable实现,2/3装填因子会拉长大小,冲突后采用一个伪随机探查法(记不清了)

6、有没有处理过并发    答:简单结合项目说了一下

7、你用python的时候有进行过性能优化吗  答:吹了两个点,一个是for改矩阵运算 还有一个是做实验的时候用多线程读取训练数据。

最后手撕代码,说实话面到这里紧张的很,也很疲惫,导致后面发挥失常

问题是leetcode原题 543 二叉树最长路径,我正好没刷过

一开始讲了一下思路,计算叶子节点间的最长路径即可,想当然认为最长路径必然经过根,快写完了面试官说你这里好像有问题,我才反应过来,后面一下子就蒙了。

几分钟后面试官给提示,其实已经是明示了,问我一棵树和它左右子树的最长路径之间有什么关系,我才反应过来,写完之后。

面试官给了一个例子,然后构建一下这个树,并跑一下写好的代码,用中序+前序的方法构建了,最后跑出来结果还差1,边界条件差了一个地方。

整个手撕代码过程磕磕绊绊的,非常差,对二面不报太大期望了,最后面试官问我有啥想问他的,然后就说有结果会7天内通知。

总结一下,基础知识要牢固,特别是很多细节,不能浮于表面,算法也要多刷,前面面试50多分钟再来考算法真的压力很大,再来一道陌生题可能当场就炸了,可能也是面试经验不足吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章