腾讯抖音iOS岗位三面面经
1.进程和线程的区别
2.死锁的原因
3.介绍虚拟内存
4.常见排序算法,排序算法稳定的意思,快排的复杂度什么时候退化,基本有序用什么
5.TCP可靠性
6.http+https
算法
Z字遍历二叉树,归并排序
后面说因为我不会java和安卓,会帮忙转推到iOS的组(面试的这个组是java客户端)
腾讯PCG iOS一面(1h)
1.聊项目,聊了很久,一开始没有意会面试官想知道什么,最后说是想知道我这么做比起从客户端自己去实现的区别(这个项目是小米实习时候的项目,做的浏览器内核,页面翻译功能,
基本每一个客户端应用都会有一个类似于浏览器内核的东西,对页面进行渲染,呈现,也可以叫渲染引擎,学前端的肯定知道这个东西,他主要是解释html,css,js的。
我做的这个页面翻译功能可以不经过内核直接由客户端工程师用安卓客户端实现整套逻辑,所以这么问我了)
2.实现string类,实现构造,析构,里面加一个kmp
3.介绍智能指针,智能指针保存引用计数的变量存在哪里,引用计数是否线程安全
4.算法:两个只有0和1的数字序列,只能0 1互换,每次当前位互换都会使后面的也换掉(比如,011000,换第二位,成了000111),计算从一个变到另一个需要几步操作。
5.https,验证公钥有效的方法,为什么非对称对称并用
腾讯PCG iOS二面 (40min)
1.算法:
合并排序链表
2.static关键字的作用
3.const关键字的作用
4.成员初始化列表的作用
5.指针和引用的区别
6.又是很久的项目,怎么去学习浏览器内核(chromium内核的代码量有几千万行,而且写的很难懂,用了大量的设计模式,作为一个菜鸡真的很痛苦)
,怎么去调试项目中遇到的问题(这里主要是一个ipc接口没用对),你觉得人家google的是怎么去调的,你为什么和人家做法不一样?
腾讯PCG iOS三面(2h)
1.还是聊了很久项目(已经麻了,做过的东西一定要能说出口)
2.浏览器呈现一个页面经过了哪几步(DOM树,layoutobject树,browser进程绘制)
3.C++多态的实现
4.DNS解析,递归与迭代的区别
5.chromium用的渲染引擎是什么,这个渲染引擎对应的js解释引擎是什么(blink和v8,前几个问题表现有些差,这会在问一些1+1的问题了,哭)
6.平时怎么学习技术的,看过哪些书,有过哪些输出(我把实习时写的项目wiki给截了个图)
然后反问,打开牛客让我写了个代码,他不知道去哪了,我自己在这写,写了一个多钟头,你以为这是道很难的题吗?no,是我那会确实很菜,哈哈
题目是,给一个字符串插入最少的字符,让这个字符串变成回文
腾讯hr面 (40min)
1.有哪些缺点
2.投了哪些,为什么不投阿里头条(实习忙的我面你们都要面不过来了)
3.如何选择offer
4.家是哪的,为什么愿意去深圳
每一个问题都不是简单的答完就完事了,他会跟着问很多
然后反问时我问问题给我说了20分钟
抖音 iOS一面 (1h20min)
上来闲聊了一会
1.算法:
字符串大数相加
写完问我有没有需要优化的地方(内存可以优化一下)
2.string类赋值运算符是深拷贝还是浅拷贝
3.算法:
根据前序和中序输出二叉树的后续遍历
4.C++ deque底层,deque有没有重载[]
5.为什么要内存对齐,内存对齐的规则
6.算法:
上台阶,加了个条件,这次上两级,下次就只能上一级
7.反问+闲聊
抖音 iOS二面 (1h)
十分钟不到的项目
1.进程和线程的区别和联系
2.线程共享哪些内存空间
3.进程内存模型
4.进程间通信方式
5. 虚拟内存,为什么要有虚拟内存,虚拟内存如何映射到物理内存
后面还挖了一些操作系统的问题,记不太清了
5.TCP为什么四次挥手
6.https客户端验证公钥的方法
7.描述并写一下LRU
8.说一下怎么学chromium的,怎么上手项目的
9.C++内存分配,写了一段代码,看里面申请了哪部分内存,申请了多少,代码有什么问题
10.代码里面的内存泄漏怎么解决,智能指针的引用计数怎么实现,那些成员函数会影响到引用计数
11.代码里面有无线程安全问题,线程安全问题的是否会导致程序崩溃,为什么
12.C++虚函数的实现原理,纯虚函数
13.C++引用和指针的区别,引用能否为空
抖音 iOS三面 (1h)
1.lambda表达式,它应用表达式外变量的方式和区别
2.decltype的作用,他和auto有什么不同
3.C++的所有智能指针介绍一下
4.C++thread里面的锁,条件变量,讲一下怎么用他们实现生产者消费者模型
5.C++20有什么新东西(我就知道支持了协程,然后他说我就想问你协程,然后我说,其实我具体不了解,丢人了)
6.右值引用是什么,移动构造函数有什么好处
7.操作系统微内核宏内核(懵)
8.进程间通信的共享内存,如何保证安全性(信号量),结合epoll讲讲共享内存
9.TCP协议切片(懵)
10.TCP协议的流量控制机制,滑窗为0时,怎么办
11.算法
合并K个排序链表
12.合并K个排序数组,讲思路,我说归并,他说,传输参数是数组,不是vector,你如何判断数组的大小