快手 编译器研发 一二面面经
3.29一面(50分钟)
- 项目经历
- 编译过程
- PGO优化相关
- 看代码说运行结果:
- 修改字符串常量
- 报错吗?
- 为什么
- 1号线程x=1,done=1。 2号线程while(done == 0) { /* loop */ }done = 1; print(x);
- 输出结果是什么
- 为什么
- p = malloc(8)
- 这段代码做了什么
- 能申请多少空间
- 释放的过程怎么知道释放多少空间
- TLB
- 全称和英文是什么
- 有什么用
- 手撕
- 最长上升子序列(5分钟)
- 解释
- 刚刚哪里卡了一下
4.8一面(1小时20分钟)
聊项目(50分钟)
- 介绍项目并反问
- PGO优化
- BOLT优化
- 编译时间很长怎么办
聊八股(30分钟)
- struct在C和C++里的异同
- c语言里的struct定义,有办法不带struct关键字吗
- 数组和指针区别
- 写一个常量指针和指针常量例子
- 将0x1234赋值给int型,如何char*指向刚刚的地址,分别输出 (int)*p,(int)*(p+1),(int)*(p+2)。说一下代码输出内容,为什么?假设在64位小端机器上
- C++虚函数的作用和原理,写一个例子,另外说一下对纯虚函数的理解
- memcpy原理与实现
总结
面试官都很好,有引导,但就是自己太紧张了,有点懵,有几题很简单的没回答出来,结束了瘫在椅子上两三分钟也就想明白了。复盘的时候感觉面试官已经在尽力抢救我了。二面的面试官:“你的项目经历很不错,你这基础不太行”。感觉这是离成功最近的一次了,着实可惜。 二面完一周后官网上流程结束。