快手C++开发1-2面
待了2天,终于有勇气听快手面试的录音了
- 1面和2面是连起来的,中间有几十分钟时间吧.
1面
4.16
17.30-18.20
1.语言?windows or ubuntu?
2.数学
- 1.两个向量的点积的几何意义?
- 2.叉积?
- 3.写一个绕X轴旋转的3维矩阵,旋转α角度?
- 不会
- 4.二维的绕着Z轴旋转α角度
- 没推出来,说了下思路
- 5.物体绕着X单位轴旋转90°,欧拉角、四元数的表达式?
- 没记住
- 6.齐次坐标介绍下?
- 7.图像学基础有吗?
- 没有
- 8.Harris角点用过吗
- 用过ORB
- 9.高斯卷积核的基本原理
- 不会
- 10.图形学了解吗?
- 不了解
- 11.相机坐标、世界坐标介绍下
- 12.世界有个位姿P,根据相机外参求相机坐标系下的位姿?
3.C++
- 1.堆和栈的区别
- 2.new和malloc有什么区别
- 3.构造函数可以是虚函数吗?为什么
- 4.简述下多态的方法
- 5.说下vtable细节
- 6.基类析构函数最好是虚函数,为什么?
- 7.构造函数有哪些必须在初始化列表完成?
- 8.如果类在实现时,构造函数设置为protected,为什么?什么时候用?
- 9.智能指针?常用的哪几种?
- 10.shared_ptr的实现?几种实现,随便说一个
- 11.unique_ptr
- 12.右值的应用场景
- 13.写一个类animal,6种构造函数
4.操作系统
- 1.说下分页机制\虚拟内存
- 2.多线程了解吗
- 不了解
5.手撕代码
- 归并排序写下实现
- 最差的复杂度,面试官之后说最后还加一个n
- 优化一下,最后的for改写成memory copy(不会)
- 归并排序写下实现
6.有什么问题?
- 1.问了下为什么这么看重数学?
- 给我展示了具体做什么
- 1.问了下为什么这么看重数学?
面了有接近50min,比较重视数学,奈何没有准备,好久不看了,基本都没答上来.其他内容都很基础,很有广度.
2面
4.16
19.00-20.40
1.介绍下自己
2.介绍下项目
- 10min
3.stl用过哪些容器?
4.vector了解过实现吗
5.vector.size capacity
6.int a[10], delete a的时候,怎么知道delete多大的空间呢
7.内存有了解吗?
- const答错了,记成代码段了,面试官提醒为什么放const呢,然后各种提示
8.pack()字节对齐内容
9.写一个求阶乘的代码
- 考虑边界等特殊情况
10.手撕代码
- 1.二叉树后序遍历,非递归
- 忘了非递归怎么写的,花了挺长时间没想出来,面试官还提示了(栈结构保存flag)最后面试官让我写递归了
- 2.编辑距离
- 其实之前做过,看到还挺高兴的,但是具体的忘了i和j的意义,还有插入是前插还是后插.状态转移大约知道,但是具体怎么写不会了.哎,菜的不行
- 1.二叉树后序遍历,非递归
面了有1h40min,身心俱疲。并不是说面试官怼,而是面试官可以抓到我的弱点,然后让它显示出来。我现在已经不太拘泥于结果了,有这样的面试对我来说是一个巨大的提高,可以让我的弱点充分暴露,然后自己可以根据这些继续提高。面试官人是很好的,当我遇到阻碍时,他会很友善的鼓励,实在想不出来的时候还会有一些小提示,奈何我不太争气,掌握的还不够扎实,所以还需努力。继续加油,最后感谢快手