字节客户端面经
一面 9.28 50min
一、自我介绍
二、项目相关
1、客户端之间怎么连接?
2、每个连接都是开不同的端口吗?
3、连接是基于TCP还是UDP?
三、 TCP怎么保证传输可靠性?
四、TCP三次握手、四次挥手
五、HTTP是一种什么样的协议?
六、HTTPS/HTTP区别
七、HTTPS具体怎么实现的?
八、HTTP的报文格式
九、HTTP的请求头部有哪些典型信息?
用户代理信息放在哪里?
十、程序被编译成可执行文件的过程
链接的过程?主要做了什么?
汇编之后的文件为什么不可执行?
十一、内存空间分配
字符数组
int main()
{
char a[]="abcde";
return 0;
}
a存放在哪里?
“abcde”放在哪里?
sizeof(a)=6
a[1]='a';允许吗?
十二、什么是虚拟内存
十三、博弈论/必胜态/必败态
200个球,两个人拿,每人每次拿1-5颗,如果轮到拿时,没有球,则输。我先拿,有办法保证我赢吗?
十四、手撕:每k个元素翻转单向链表
二面 9.29 55min
一、自我介绍
二、项目相关
1、智能小车的循迹怎么做的?
2、困难点在哪里?
3、火炮身管的核心点是什么?
4、仪器需要放在固定位置吗?
5、网络这方面为什么用第三方库?
6、第三方库主要做了什么事情?
7、协议有帮助处理吗?
8、自己会设计类似这样吗?
9、比如0x00开头,0x00结尾,发送的内容是0x00,怎么处理?
怎么判断开头和结尾?或者怎么判断0x00是结束还是发送的内容?
三、TCP协议报文的前几个字符是做什么用的?
四、TCP是怎么发送数据包的?做到有序?
五、多线程和多进程有什么区别?
六、一个任务单线程也可以完成,为什么要用多线程?什么情况下用多线程?
七、锁的原理?怎么实现的?
怎么做到把两个线程锁起来?体内原理看过吗?
八、结构体
struct my
{
char a;
short b;
char c;
int d;
char arr[3];
};
单字节对齐占多少字节?
4字节对齐呢?
九、为什么要字节对齐?
十、TCP/HTTP的区别
十一、 HTTP/HTTPS区别
十二、SSL握手过程
十三、非对称交换的作用是什么?
十四、如果把所有的通信包都拦截下来,可不可以破解他的密钥?
十五、客户端怎么知道里面的内容的(好像是说怎么知道公钥的)?
十六、如果已经拿到公钥,也可以解密吗?怎么保密?
十七、数据库用过吗?
十八、有100万人抛硬币,正面为上的时候,记录+1,停止抛;反面为上,记录+1,继续抛,直到出现正面为止。正面和反面记录的比值大概是多少?
十九、手撕:实现一个支持 push, pop操作,并能在常数时间内检索到最大元素的栈
二十、智力题
8个长一样的球,有1个比别的重,最少用天平称几次能找到这个重的球?
二十一、反问
三面 10.13 35min
一、自我介绍
二、项目相关
1、身管膛线是什么样的设备
2、光是怎么打出来的?相机得到的是什么样的图像?
3、用到什么样的图像处理?
4、位置是怎么确定的?
5、之前学过图像处理吗?
三、怎么判断一个点在矩形里?
四、电赛参与的是哪个项目?
五、C++内存管理
六、数据库用过吗?
七、非阻塞复用的模式是怎么实现的?
八、手撕:从第一个字符串中去掉第二个字符串中包含的字符
九、哈希表的实现:哈希函数
十、进程间通信方式?用过哪个?
十一、用过UDP协议吗?
十二、TCP和UDP区别
十三、TCP怎么保障可靠性?
十四、自己擅长的点?
十五、可以来实习吗?
十六、反问