凉经
TODO LIST
- 修改简历
- 总结项目
- 八股文
柠檬微趣 - 笔试 - ×
笔试题
- 01 背包问题,用 n 个物体装满容量为 s 的背包,有多少种方法。回溯超时
- 字符串问题,IPv4 十进制转换,0.0.0.0 ==> 00000000
- 树,求封闭区域个数。给一个二叉树,随机在每一层画一个横向,求封闭区域个数
- 归并排序
进制转换
cout << bitset<8>( 255 ) << endl; // 11111111 cout << bitset<16>( 255 ) << endl; // 0000000011111111 cout << setw( 6 ) << oct << 255 << endl; // 377 cout << setw( 6 ) << setfill( '0' ) << oct << 255 << endl; // 000377 cout << hex << 255 << endl; // ff cout << uppercase << hex << 255 << endl; // FF string bStr = "11111111"; bitset<32> binary( bStr ); int decimal = static_cast<int>( binary.to_ulong() ); // 255 stoi( bStr, nullptr, 2 ); // 255 string oStr = "377"; int decimal = stoi( oStr, nullptr, 8 ); // 255 string hStr = "ff"; // FF int decimal = stoi( hStr, nullptr, 16 ); // 255
Brian Kernighan 算法
计算一个正整数的二进制位上 1 的个数,如 7 是 3 个。
通过 n & (n - 1)每次消除最低位的 1,直到 n 变为 0。时间复杂度是 O(k),其中 k 是 1 的个数。
int countSetBits(unsigned int n) {
int count = 0;
while (n) {
n &= (n - 1); // 消除最低位的 1
count++;
}
return count;
}
景天数字 - 1 √ 实习
一面
- 多进程与多线程的适用场景
- epoll 标志位
- Webbench 并发测试,并发发送的是什么?多大?
- Go 如何实现无锁版本 MapReduce?
- 内存池
- Raft 如何保证一致性
- Raft 如何测试并发的?
- STL 自定义内存分配释放
- 实验室项目
- 模板用到了吗?有什么好处?
- 最近看过什么 C++ 书籍?
中国华录 -1 √ 实习
线下
首汽约车 - 2 × 实习
运维开发实习生,python 做内部 DNS 服务器
一面
- 根据端口号查进程lsof:list open files,查看系统中打开的文件。输出详细,支持协议过滤(TCP/UDP)netstat:network statistics,网络连接、路由表、接口统计-t:显示 TCP-u:显示 UDP-n:不解析域名/IP,显示数字,速度快-l:只显示监听状态的套接字-p:显示使用该端口的进程 PID/程序名ss:socket statistics,比netstat更快、更现代的工具、简介-l:仅列出监听状态的 socket-n:数字格式显示,不解析域名-t:显示 TCP 连接-p:显示进程信息
- 进程与线程
- Cookie & Session服务器返回响应头Set-Cookie: userId=42; Path=/; HttpOnly; Secure浏览器保存 Cookie,每次请求时,浏览器会自动把 Cookie 携带到请求头中:Cookie: sessionId=***; userId=**服务器解析 Cookie,获取用户信息客户端第一次请求:服务器生成 sessionId,并在内存/Redis 中建立 Session 数据结构({userId: 42}),响应头Set-Cookie: sessionId=***; HttpOnly; Secure和 Session 数据。客户端记录在 Cookie 中客户端后续请求:浏览器在请求头中带上Cookie: sessionId=***。服务器查找对应 Session,得到用户信息
- 如何存储用户登录状态
- 了解过 NoSQL 数据库?
- 日志,同步异步
- 项目,有什么界面?
二面
- 单例模式实现、应用场景
- select、poll、epoll 区别 和 实现
- Linux 的事件类型I/O 事件:可读事件 EPOLLIN、可写事件 EPOLLOUT、关闭/错误事件 EPOLLHUP/EPOLLERR文件系统时间:inotify 监听文件变化(创建、删除、修改)信号事件:SIGINT、SIGTERM……定时器事件:timerfd基于文件描述符的定时器进程间通信事件:pipe、FIFO、消息队列、信号量、共享内存
- TCP 报文内容,三次握手,拥塞,窗口大小
- CS144 主要干什么
道通 - 1 √ 实习
- 自我介绍、项目介绍
- 单例模式、设计模式饿汉&懒汉&双重锁
- C++与 C 区别面向对象,多态 & 继承
- C++数据结构底层
- LRU LFU ARC 区别表Redis 内存淘汰策略
- GitGit merge 和 git。。。
- 算法,翻转字符串各个单词(原地算法)
影刀 - 2 ×
一面
- 自我介绍
- 面向对象多态,虚指针,虚表 如何实现?如何查找调用函数如何实现,没有详细了解
- STL 容器的底层介绍没有说出所有的容器红黑树,没有了解
- 智能指针,底层实现
- 右值引用,完美转发
- C++17 新特性
- 内存溢出
- 进程和线程通信、同步、互斥
- LRU 和 LFU 的区别?如何进行性能和功能测试的?
- CS144 具体在 TCP 上实现了什么?累计确认有无拥塞控制
- TCP 的拆包和粘包
- MapReduce 的流程go 语法
- 协程如何实现协程和线程有什么区别?
- ET 和 LT
- 生产者消费者模型
- 线程状态及转换
- 线程池如何实现?创建时间,如何结束线程?
- 多线程如何调试监控?
- TinyWebServer 不够了解
- 找出最大的 K 个数
二面
- 哪里人?工作地可以么?
- python 如何调用 C++?
- std::mutex底层如何实现?
- TCP 如何实现可靠?
- GET & POST
- 是否阅读过开源项目代码?
- Webbench 本地测试和多机测试区别?
腾讯云智 - 1- 池子
一面
- 7 层网络模型
- 网络攻击
- 线程与协程上下文
- mysql查询一条 SQL 流程索引实现、分类、优化事务隔离级别,如何实现Read view
- Redis数据类型及其适用场景持久化策略内存淘汰策略redis 集群
- 合并两个有序链表
锐我 - 1 - 池子
卓望 - 3 - C++
一面
二面 HR
- 自我介绍
- 为何选择 C++
- 学习路线
- 成绩排名
- 薪资
三面 综合面
- TCP 拆包,面对大量数据
- 软中断与 TCP 发包频率
- ICMP
- MySQL 复杂查询
- MySQL group by
- MySQL 大量数据表管理
- 互斥锁 & 自旋锁
- AI coding
- 比赛和实践经历
点点互动 - 1 - c++ - ×
- 红黑树
- 跳表
微步 - 1 - go - ×
- 自我介绍
- 项目介绍
- 三次握手
- 四次挥手
- 线程、进程、协程
- 内存空间、虚拟内存
- 结构体大小计算方式起始偏移量必须是该成员大小的整数倍结构体总大小必须是其“最大成员大小”的整数倍(不足则补齐)嵌套结构体:嵌套的结构体对齐到其内部最大成员的大小
- MySQL 事务特性
- ping 程序
