腾讯csig客户端一、二、三面
一面4.1
介绍项目
线程池设计,线程数怎么分配
性能瓶颈(可以使用协程对线程进行优化)
http响应过程使用mmap
json序列化如何实现,其他的序列化方式(如何对象持久化存储)
Redis中间件的作用
离线消息保存
如何保证消息发送成功(应用层消息确认机制)
C++的内存分区
new和malloc区别
指针引用的区别
智能指针
深拷贝浅拷贝
std::move 如何实现
vector内存分配方式
map的数据结构
const和define
如何理解线程安全
LRU缓存
TCP与UDP区别
拥塞控制
HTTPS加密
如何理解内存泄露,监控方式
web服务器优化空间
聊天消息按序显示怎么实现
手撕lc678
二面 4.3
介绍项目亮点
io多路复用
使用正则表达式的作用
正则表达式性能不太好,还有什么方式解析http请求报文
从源头开始将如何收到http报文然后进行解析(从二进制以及网络模型各个层讲)
怎么区分请求的body与头部
http是否使用数据压缩
动态增长缓冲区实现,是否进行内存复用(可以通过内存池的方式)
小根堆定时器(为什么不使用hashmap?这样查询不是更快吗)
同步/异步日志,阻塞队列的实现(使用mmap会更好)
线程安全问题
数据库连接池介绍
怎样提高数据库的查询速度(建立索引,为什么不使用红黑树)
为什么选用muduo库开发
登陆怎么保证密码不被窃取
账号密码怎么存(哈希加密)
聊天项目怎么设计的,代码设计上的考虑
TCP本身就是有序的,为什么还要加消息编号
平时写代码有没有遇到一些问题,怎么分析bug的
代码调试和日志调试哪个效率高(分布式系统选取日志调试)
做项目过程中遇到的难以解决的问题
coredump文件
lamda表达式(值捕获与引用捕获)
实现单例模式(其他的几种设计模式)
平时怎么学习
三面 4.10
拷打项目
分享几个比较好的点
如何评估QPS
web服务器的原理
线程数量
为什么使用线程池
mmap高性能的原理
数据库选取
TCP socket 和http关系
https如何保证安全传输
中间人攻击,https是否能防止中间人攻击
tcp三次怎样改成两次
多线程与多进程的使用场景
设计一个浏览器和迅雷下载器,选取多线程还是多进程
如何实现负载均衡
json序列化
redis作用
并发量较高的时候mysql会存在一定压力,如何解决(缓存)
redis高性能是如何实现的
redis持久化
项目里印象深刻的难点,如何解决
怎样学习
自我评价
#c++面试##腾讯##客户端#