今天被腾讯捞了,一年前投的简历。岗位是客户端安全,并且当前下午1点多发的邮件,晚上就面试,连个电话都没,面试官人非常好,一面面了一个小时,下面是面试记录:
1.介绍了下面试官的team,问时间上有没有冲突。
2.简单介绍一下自己。
3.介绍一下自己擅长的方向与自己的成绩。
4.c++较c的优势(面向对象的优势)
5.c++虚函数知道吗?虚函数指针知道吗?纯虚函数知道吗?
6.虚函数表在类中是怎么排布的?
7.模板编程知道吗?用了两个不同的模板类,编译时会有几个代码?
8.逆向有经验吗?用过哪些逆向工具?
9.介绍一下pushad?
10.介绍一下你知道的汇编指令?
11.介绍一下左移右移指令(sal、shl等)?
12.汇编里有哪些跳转指令?
13.ssl/tsl层的原理?
14.知道哪些加密算法?
15.hook机制知道吗?不知道的话如果让你去hook你会怎么做?
16.如果线程卡死,如何保证线程安全?
17.你有哪些问题要问我的?
二面(凉):
1.0x18与19对应的汇编指令的不同点(懵)
2.hook机制里如果API入口地址那里不符合五字节定义,你会怎么做(再懵)
3.BC继承于A,D继承于BC,则D的虚函数表是怎么样的?
4.STL知道吗?介绍一下unorder_map和map的区别?(一个是hash一个是红黑树)
5.智能指针知道吗?介绍一下?
6.不用循环和库函数怎么求字符串长度?
7.平时喜欢做什么?(弹吉他,打游戏)
8.平时打什么游戏?有碰到过外挂吗?你觉得机制是怎样的?怎么解决?
9.碰到过最自豪的事是什么?
10.有什么想问的?
因为安全知识比较薄弱,果然把我挂了,然后被腾讯音乐的web开发捞了。
一面:(两小时)
五道算法题:
- N!5min
- 求一个正整数的“倒数”。不能当做字符串来处理,不可使用数组等高级的数据结构,使用数学方法求解。5min
- 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。要求使用空间复杂度为 O(1) 的原地算法。10min
- 在数组中找出3个数使得它们和为0。集合S={-1,0, 1, 2, -1, 4},则满足条件的3个数有2对:(-1, 0, 1)和(-1, 2, -1)。
- 删除单链表当前指向的节点。
勉强做完道,接下来是基础知识:
6. 全局变量在堆栈的哪个部分?
7. 函数传参的参数在哪个部分?
8. 知道哪些数据结构?
9. 栈/堆数据结构的特点?
10.熟悉http协议吗?
11.熟悉缓存吗?
12.常见的web攻击方式?
13.CSRF的原理?
14.https在哪一层?
15.排序算法有哪些?哪些是稳定的?
16.sql注入的原理?
17.进程的状态和进程间通讯的方式?
18.进程与线程?
19.CPU调度的最小单位?
20.进程由运行切换为就绪的原因?
21.管道通信的半双工?管道通信的应用范围?(父子)管道通信的开销?
22.内存共享的速度?
23.平时的学习方法?(看书、google)
24.什么时候毕业?什么时候可以实习?
25.有什么问题想问我的?(问了用了什么技术栈)
全是基础问题,主要是算法/数据结构/操作系统/网络/安全。星期六面的,星期一面试状态变成了复试,但是因为技术栈完全不对口,所以不是很有信心。这是个偏全栈的职位,后端主要是java/php/go。