[面经]字节跳动 后端 offer√

上海字节跳动提前批

这辈子第一次工作面试,没想到就顺利拿到offer了。

字节租了一整栋楼,面试体验是真的好,专门的面试场地,装修就特别科创公司的那种,一个个小隔间,靠墙一侧有落地窗,能看到外面花圃及街景,每个隔间都配置了个空气净化器,反正面的很舒服。

面试官人手一个Mac直接在上面看电子简历,当然我也自己带了纸质简历。

一面
1.自我介绍 blabla还没讲到项目就打断了然后狂抛问题
2.两个程序中函数的地址一样,同时运行时会出问题么?答到linux虚拟内存管理方式
3.可重入概念
怎么保证线程安全
怎么保证一个函数是线程安全的
多进程与数据库通信怎么保证线程安全、事务
4.进程间通讯方式
答了那几种IPC
可以用文件来实现通信么?可。如何通知通信结束还什么的?定义一个通讯协议,比如某某字符代表什么意思。说了一个技术名词但我没听懂,但其实原理和我说的这个一样。
然后说回去可以了解下EBS
5.登录验证方面是否懂。答到https基于ssl层非对称加密去了。。。
然后又准备深入考数据库方面的。赶紧制止,说我其实是搞嵌入式的,对桌面端做的不多,数据库只会CRUD,然后开始介绍自己研究生研究课题的架构什么的,总之是IOT通信方面的。面试官说他明白了,我学的很底层,考这些偏上层的对我不太公平。然后说那我考你个算法题吧。
6. 定义一个二叉树的长度为一个叶节点到另一个叶节点的最大长度。怎么求一个树的长度。
7. 智力题:每个球上标有一个数字,2N个球平均放到N个筐中,怎么样放才能使得:每个筐取最小数字的那个球,然后求和;这个和最大。
说会告诉2面的面试官我主要偏底层,不要再考上层的知识了。

刚刚出门没两小时就来通知安排二面

二面
1.自我介绍
主动出击,讲了下我目前的科研项目的架构,用到的技术。然后开始闲聊,字节的后端用到的语言呀(Go)什么的
2. 问:如果你入职的话知道要补哪些方面的知识么?
3. 项目中有用到什么数据结构。答:通信中用了队列。
4. 怎么实现线程安全的环形缓冲区;现写一个。然后就开始手撸面向对象的代码了。基本就是enqueue和dequeue前加锁。然后边写边让面试官看我博客上写的多态的环形缓冲区。然后面试官说我写的超出预期,本来就想看我写个单例的就好了。(其实代码中居然2B忘记回环这回事了,还好代码写的很工整,面试官也没细看)。
5.然后就闲聊有什么想问的。blabla

N天后三面
按照2面的经验,主动出击,自我介绍时结合带的资料条理清晰的讲了自己的技能树,重点介绍了自己研究生研究方向设计的架构的整体思路,用到的技术等,边讲边给看准备好的论文、专利、架构图什么的。

然后问到的问题和后端面经要准备的差别不大。含:
线程安全和可重入、线程和进程(主动扩展到内存管理相关知识、与uCOS2的对比)
同步机制、IPC(主动扩展到中断等中的现场安全)
文件缓存机制(主动扩展到CPU多级缓存乃至网络上缓存、反向代理的概念)
然后说我这反向代理的知识体系是十年前的,给我聊了下动态页面什么的。
问对UNIX的文件IO接口的某某机制有了解没,没听过的词,说没有。
问有UNIX、Windows下多线程编程经验没、读过APUE没,没有,然后就不问操作系统相关了。
没问啥TCPIP相关的,可能是觉得从我对自己研究方向的介绍中已经大概知道了我网络方面的水平,偶尔在前面中穿插着聊了点。

问有学过数据结构和算法么,答《数据结构与算法分析 C语言描述》学了90%。然后出算法题:
1.n个有序数组中取最小的k个元素,包括复杂度分析
先答了n个指针通过比较每次取最小的那个O(nk)的算法;然后思考后又答了使用最小堆的O(n+klogn)的,然后让在白板上画出算法过程,要求证明n个元素的二叉堆的构建的复杂度是O(n),忘了怎么证。。。
2.手写合并两个有序数组的代码
双指针,没难度。

然后就是反问问题环节了。

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