面试总结

1. 进程的状态,僵死进程

http://blog.csdn.net/nilxin/article/details/7437671

http://baike.baidu.com/link?url=6p9NTARJI51aL6dokyYcZbvydGMDjCTIO2NjCZc0mBtGKSo8ESRlTlcxXArE4f2483vgekGG0y7SLIQoI-UQWq9-UUZsQP8bFPHqVcNDdurmrgISw37MX3uxcS3mAPCw

 

2. 3次握手, 为什么是3次握手

http://blog.csdn.net/xumin330774233/article/details/14448715

 

3. 4次挥手, 为什么是4次挥手

http://blog.csdn.net/qq276592716/article/details/19762121

 

4. timewait,为什么需要timewait

首先,如果last ack如果丢失,主动关闭端需要重新发送ack包,因此主动关闭端不能在发送last ack后马上进入closed状态,而是进入timewait状态;

其次,保证老的重复分节已被丢弃,不会影响新的连接

 

5. 构造函数和析构函数可以是虚的么,为什么

http://www.cnblogs.com/lixiaohui-ambition/archive/2012/07/13/2589716.html

http://blog.csdn.net/chen825919148/article/details/8020550

 

6. 协程

 

7. select和epoll的区别

http://www.cnblogs.com/Anker/p/3265058.html

http://blog.csdn.net/shuxiaogd/article/details/50366039

 

8. 进程通信的方式, 区别和联系

http://www.cnblogs.com/mydomain/archive/2010/09/23/1833369.html

https://blog.csdn.net/piaoairy219/article/details/17333691

ZeroMQ是一种基于消息队列的多线程网络库

9. 线程同步的方式

互斥锁: 获取锁失败的线程进入阻塞状态;

读写锁: 读锁共享,写锁互斥, 在读远大于写的场景下面,可以增大并发,性能更佳;但是读写锁逻辑更复杂,一般情况性能不及互斥锁;

自旋锁:获取锁失败的线程,不释放cpu, 而是进入忙等状态,适用于锁被持有的时间很短的场景。自旋锁可以避免互斥锁导致的线程频繁切换成本,但是自旋锁冲突严重也会导致cpu sys飙高。

10. 网络模型

nginx高并发模型

11. tair是如何进行数据迁移的

mdb 2万 getcount, ldb  8000 getcount, 集群规模70台,

12. db优化,分表

https://blog.csdn.net/xlgen157387/article/details/53976153

https://zhidao.baidu.com/question/1242108282694993579.html

13. 业务的流量

4个集群, 每个集群100台机器, 96G内存,cpu 32core, 单机qps 500,应用70,网卡万兆,   性能测试5w qps, cpu90+%

信息流, 单机峰值qps:100, 单机房:200台机器; 性能测试800+ qps, cpu user:80+%,cpu sys:10+% , 原因:自旋锁冲突 

14. 碰到的困难,怎么解决的

15. 描述快排

16. 最近在看的书

程序员自我修养

17. tcp怎么保证稳定性,udp和tcp的区别,使用场景

超时重传,保序,确认,校验,流量控制,去重

https://blog.csdn.net/m0_38121874/article/details/82914634

18. rehash,解决冲突的方法,多阶hash

19. 进程和线程的区别

20. 类的大小

https://blog.csdn.net/fengxinlinux/article/details/72836199

空类的大小

21. 惊群问题

https://www.cnblogs.com/Anker/p/7071849.html

22. 滑动窗口原理

http://baijiahao.baidu.com/s?id=1581610570141881026&wfr=spider&for=pc

https://coolshell.cn/articles/11609.html

23. 算法:滑动窗口最大值

https://blog.csdn.net/u010429424/article/details/73692248

24. static_cast 和dynamic_cast

https://blog.csdn.net/qq_26849233/article/details/62218385

25. B-树和B+树, B+树用在什么场景

 https://www.sohu.com/a/156886901_479559

26. vector的动态内存管理, dequeue

resize vs reserve

https://blog.csdn.net/linhao19841211_2/article/details/8154805

dequeue实现

https://blog.csdn.net/baidu_28312631/article/details/48000123

27. 优先队列的实现

大顶堆

28. 分布式一致性的方法

二阶段, paxos, bully

29. 训练集群

核数: 180*395 + 64*83 = 7.6w

内存: 256*(395+83) = 122T

任务数:2千/day

30. gpu训练

成本优势: 是纯cpu训练的2-4倍

模型:mlp(1024,512,128), 特征id 15亿, 样本5亿

cpu训练: 50ps(各15core)+ 50worker(各15core)=1500core = 23.5台腾讯云S5机器, 10w qps;线性扩展能力弱,集群规模增大后,性价比下降;

gpu异构训练: 1台v100机器+5台腾讯云S5=14.3台腾讯云S5机器,15.5w qps, batch 2048

耗时分布: 训练时间82ms(8*2048样本的训练时间),pass切换时间2817ms(1pass=1024batch,分摊到每个step为22ms), 分摊后,每个step的实际耗时是82+22=104ms。

 

posted @ 2017-06-05 07:23  simon1024  阅读(410)  评论(0编辑  收藏  举报