手撕记录

快排;稳定版本快排;三路快排;

堆排序;

最长递增子序列;

最长无重复子串;

智能指针shared_ptr;

字节国际化社区测开面经

1.介绍一下TCP/IP协议

2.MAC地址和IP地址有什么区别

3.介绍一下什么是局域网

4.讲一下DNS

5.DNS协议具体是怎么找到服务器地址的

6.介绍一下什么是Socket

7.详细介绍一下socket是怎么建立连接的

8.一个端口可以建立多个连接吗

9.对webserver项目进行深入的介绍

10.webserver项目中HTTP请求处理的细节

11.服务器实现的路由机制

12.介绍一下利用Epoll实现Reactor事件模式,什么是IO多路复用

13.Epoll的实现效果,提升了多少?

14.介绍一下什么是双向链表,Epoll为什么要用双向链表?

15.Epoll中双向链表与红黑树机构的应用方式?双向链表怎么发挥的作用?

16.介绍一下什么是红黑树?

17.进程、线程和协程有什么区别?

18.C++内存泄漏的场景?怎么避免内存泄漏?

19.介绍一下什么是B+树?B+树一般怎么去用?

20.介绍一下git分支管理?什么情况下会发生冲突?

21.手撕:字符串最长无重复字串长度?(不到十分钟就说时间到了,不用写了)

百度C++后端一面0728

1.自我介绍

2.实习内容

3.项目内容

做什么? 为什么做 ?有什么效果?

4.C++用了多久?Python用了多久?

5.详细解释Reactor模型?如何利用Epoll实现这个模型?

6.简单解释TCP与UDP的区别?

从特点到socket通信的实现的区别,引出握手;

7.TCP的三次握手与四次握手

8.常见的HTTP请求方式?以及状态码?

除了get和post还有哪些请求方式?

9.一个HTTP的请求报文有哪些内容?

10.HTTP与HTTPS的区别?

11.说一些常见的排序算法原理以及时间复杂度?

12.插入排序和归并排序了解吗?

13.讲一下什么是B+树?有什么特点?

14.B+的应用场景?

数据库系统;文件系统;存储系统;

15.数据库为什么用B+树和B树?

16.详细解释一下LRU算法?LRU算法的应用场景?

内存管理;缓存策略;

17.Redis用过吗?

Redis的缓存淘汰策略:LRU;

18.如果一个网站访问慢你会从哪些角度分析原因?

动态请求,后端数据库处理耗时;

网站会加载相关的cs,js文件;

静态资源一般会用CDN(内容分发网络)加速;(数据传输链路过长会导致速度慢);

19.知道什么反向代理吗?

Ngix; 请求baidu.com,

20.说一下对进程、线程和协程的理解与关联

21.手撕:快速排序和LRU

快手一面(C++ 网络SDK)

1.自我介绍

2.手撕

3.简述C++虚函数的用法

4.析构函数一定成虚函数吗

5.for(C c: c_array)与for(C& c:c_array)的区别

6.简述一下const的用法

7.const可以用来修饰函数吗?

8.简述一下几种常见的排序算法以及时间复杂度?

9.C++确保线程安全的几种方式?

百度C++后端二面0804

1.实习情况

2.项目情况

3.HTTP服务器做了哪些改进

4.在项目中遇到的问题有哪些?

5.go会用吗?

6.数据库用的怎么样?

7.编程能力怎么样?正常写的程序多吗?

8.C++的内存管理如何理解?

9.share_ptr的实习细节?智能指针在项目中有哪些使用情况?

10.什么是野指针?

11.C++多态的实现机制与作用?

12.场景题:几十亿个数据取出一百个怎么实现?

哈希+分割 多线程并发
内存以及速度都要考虑

13.C++类型转换

14.const与static怎么理解

15.session与cookie的区别

16.MySql场景题

17.设计一个系统,有多个管理员管理数据,两个或者管理员同时操作相同的数据怎么解决冲突

乐观锁;死锁;线程通信;

18.思维方式更倾向于解决实际问题

19.web server项目中的异步日志系统如何实现的

美团一面0904

1.手撕:全排列、树的最小深度

2.自我介绍:个人情况+专业技能

3.TCP三次握手的过程

4.为什么要三次握手,有哪些原因(1,2,3)

5.TCP三次握手的序列号起到一个什么样的作用(保证TCP连接的一个可靠性)

6.TCP属于哪一层

7.OSI为什么要分为七层?或者说为什么要分层?(架构的考虑,可拓展性,不同层处理不同的功能)

8.项目里面用的是HTTP还是HTTPS,两者的区别是什么

9.HTTP属于哪一层

10.Reactor并发模型的机制

11.为什么需要线程池?线程池有哪些优点和缺点(线程复用,线程复用也会带来线程本身的残留给其他线程造成污染)

12.如何解决线程并发问题

13.信号量与锁的区别

14.notify_all与notify_one的区别与机制实现

15.大概有哪三类并发问题?(原子性、可见性、顺序性)

16.项目里面有没有用到数据库?

17.MySQL建立业务表的索引会有哪些依据?怎么决定对哪些字段加索引?(基于业务的需要->加快查询效率)

18.MySQL的日志有了解吗?

19.除了MySQL还使用过哪些组件?(Redis)

20.为什么MySQL和Redis的学习浅尝辄止(还需要了解一下消息队列)

21.在平常的学习和项目中难以解决的问题

22.对于学习Java有什么思路?

23.看过哪些源码?看这些源码有没有结构化思路

24.反问:部门业务(美团到店);具备的技能:软实力(沟通协调)与硬实力(db,redis,消息队列)

美团二面09011

1.自我介绍

2.项目的背景介绍

3.深挖项目

HTTP服务器的实现过程;

IO复用技术的优点在哪里;

固定1万个活跃的连接需求,在这种情况下IO多路复用还有必要吗?

IO多路复用适用哪些情况下?

epoll相对于select,poll的优点是什么?

epoll为什么要适用红黑树?

epoll与poll是如何发现当前有哪些文件描述符有事件到来?

正则表达式和有限状态机实现HTTP报文解析的过程?

缓冲区的自动增长是如何实现的?为什么需要缓冲区?

怎么判断当前缓冲区不够?(和什么相比)

缓冲区不够用的时候:1.加大缓冲区;2.加快读数据的速度

缓冲区有浪费的时候有实现resize()吗?

讲讲单例模式实现的异步日志系统?

懒汉模式与饿汉模式的区别?

定时器的实现原理?为什么要用小顶堆?小顶堆的排序什么时候发生?每过来一个网络事件都要做堆的调整吗?

4.手撕求组合

5.反问(有没有对部门业务想了解的地方)