之前提前批投的字节影像客户端三面挂了,然后被深圳头条给捞起来重新面
字节头条客户端开发一面面经(技术面,视频,1.5h)
1.C++
(1)32bit机器,sizeof(A) = ?(12字节)
struct A{ char a; int b; short c; };
(2)32bit机器,sizeof(A) = ?(4字节)
union A{ char a; int b; short c; };
(3)大端序和小端序介绍下?
(4)大端/小端, int i = 0x12345678,如何判断大小端?
union A{ int a; char b; }; bool isBigEndian(){ union A obj; obj.a = 0x12345678; return obj.b == 0x12; }
(5)A && B || C && D执行顺序?(先执行A && B,再执行C && D,最后执行 (A && B) || (C && D) )
(6)&&和||优先级哪个更高?(&&大于||)
(7)inline函数是什么?
(8)extern关键字?用来修饰什么变量?
(9)static关键字?作用域、生存期?
(10)指针和引用区别?
(11)智能指针?(说了下RAII,介绍了shared_ptr、weak_ptr、unique_ptr)
2.网络
(1)TCP三次握手中,SYN、ACK、seq、ack四个字段的含义?
(2)HTTP和HTTPS的区别?
(3)HTTPS密钥协商的过程?
(4)如何实现HTTP长连接?(1.0里Connection:Keep-Alive,1.1里默认开启长连接)
(5)浏览器断点续传,分段下载时,HTTP用的哪个字段?(不会,答了个content-length字段,懂得大佬麻烦说一下)
3.OS
(1)进程和线程的区别?
(2)进程间通信机制?
(3)Linux如何创建进程?(fork,写时复制)
(4)什么是僵尸进程?如何处理?(wait/waitpid)
(5)线程同步的方式?(互斥锁、自旋锁、读写锁、条件变量、信号量)
(6)互斥锁和自旋锁的区别?
(7)死锁的四个必要条件?
(8)如何避免死锁?(银行家算法)
(9)线程池如何设计的?(线程池、任务队列、互斥锁、条件变量)
(10)线程池里面的线程是如何实现执行完函数后不结束的(while)
(11)那会不会造成CPU空转的情况呢?(不会,条件变量,条件不满足时会自动释放锁,然后进入阻塞)
4.DB
(1)从Person表中查询Age在18-25之间的数据,根据身高Tall由高到低排序
(2)接着(1)增加 Name 包含A(查询包含A的Name)
5.代码
(1)如何判断两个链表是否相交?
(2)(Leetcode162)一组数据,不存在num[i] = num[i+1],返回任意一个峰值。峰值:左右都比该值小则该值称为峰值。
数组测试样例:
(1) 1232143
(2) 321
(3) 123
6.反问
全部评论
(5) 回帖