贴一个字节7面面经吧(两个岗,1挂+6过),最后没去就是了
官网内推码投递2.9 一面通知2.14
2.16
字节头条后端一面
能来几天,实习几月。
自己简单介绍了一下项目,问都是课程项目吗?我说是,就没再问。
实习过吗?没有,好那问一些基础知识。
Http干啥的
状态码 get 和 post区别
Tcp 可靠性
重点问了拥塞控制
数据库事务是什么,特点
重点问了什么是一致性(解释了半天,不太会)
操作系统进程有什么状态
到这里大概40-45分钟
题:
最近公共祖先,有父节点指针(一开始想复杂了用了快慢指针,后来改了)(剑指offer)
没有提供测试和树的定义,写完面试官看了一下就完了。
最后没有提问环节,直接再见。
2.22
二面:深挖简历 哪些有挑战性的。每个部分实现讲讲。
简历项目涉及的八股文
做操作系统的时候有没有参考linux
页面置换算法
LRU写下伪代码
算法:之字形打印二叉树(牛客hot100)
最后其实实现的逻辑有点问题但面试官说ok
什么时候出结果?一周内。
2.24说通过约三面
2.24通知过了约三面
3.2
三面
自我介绍
能实习多长时间?
之前两次面试没回答上的有补充了解吗?有,讲了一下。
多核cpu怎么调度?不会。
数据库增删改查语句介绍一下,join, groupby orderby,索引介绍一下,B+树介绍一下。
一百亿数据查找(通过身份证考生号手机号)秒级查找怎么优化。只答了分库分表,加索引,好像不是很满意,于是我说之前没有了解过。(其实单次查找加索引就够了,4层b+树5次io怎么都够了)
操作系统cache讲一下,为什么有cache,不同级别cache访问速度
cache替换策略
linux用什么替换策略?我说这个是cpu管的,那现代cpu用什么策略?不会。
到这里大概半小时
之前lru你写了伪代码,之后回去有没有看过?(有)这次写一个可以运行的。
写了将近20分钟。写了测试。问我是不是前两天看的,我说是二面当天晚上看的,有一个多星期了吧orz。
3.3邮件挂了。之前没注意到,第二个星期找hr问结果和面评,没回。
后来听说好像是字节前半年几乎没有hc了。
第二个,编译相关的,hr捞的
4.23 一面
挑一个熟悉的编译器讲讲全流程
答: llvm讲了一堆
问:虚表在哪处理 ast->ir有了解吗 ll和lr是什么 ir的metadata和attribute区别 为什么不是严格的ssa? memory ssa有了解吗?机器无关优化怎么做的?到达定值和活跃变量分析有什么区别 ?指针分析有了解吗?循环展开为什么提升性能?(减少分支指令执行,利于指令调度,还有什么)llvm默认用的流敏感还是流不敏感? 代码生成要做什么?指令调度做什么?寄存器分配和指令调度的顺序?寄存器分配怎么做的有八股文,就不问了。进入退出函数的指令调度(push pop ebp)和寄存器分配的顺序? VLIW有了解吗?为什么说他很复杂?ptx汇编和一般汇编有什么区别?链接需要做什么?(说链接还是挺重要的,比如c++template一些处理)加载怎么做的?main函数执行前要做什么?动态库什么时候加载的?(加载时)
c++ shared_ptr 有哪些成员变量?什么类型的?std::move做了什么?为什么std::move能加速?map和unordered_map的区别
项目讲了一下;
题目:拓扑排序。写了十几分钟orz
反问:组里项目;面评(不能说)
面完半小时邮件通知过了,预约下一面时间
二面
讲一下项目
加载一个二进制程序的过程。动态库加载的具体过程有了解吗?
虚实地址映射怎么做。在虚拟机的情况下呢?mmap怎么做的?
讲一个编译优化方法的具体实现(CSE, 常数传播)
llvm后端有了解吗?(没有),有哪些步骤。
很快就过了
三面:
详细介绍一个项目;
问操作系统项目:主要是怎么加载二进制程序的。
题:给定若干任务的任务量和当前负载,如何分配任务使负载均衡。没来得及写出来,让讲了思路,但是思路也不太好。
很快就过了
四面(hr)
bq:介绍一下项目
介绍一个协作的经历
如果一个项目卡在另一个同学那里,对你优先级很高,但是对别人优先级很低,怎么办
提示:为什么卡在别人那里,优先级是不是真的低?
反向bq
过了,没去