1、自我介绍 2、Redis MySQL 项目 3、读写队列高并发优化 4、进程线程 5、C++ 虚函数 6、CMU 15-445 LAB 7、算法 1:链表相邻节点值交换 8、k8s 9、Go 项目 10、反问环节
1、一面面试体验如何 2、面试官介绍组里方向 3、std::move、右值引用、lambda 4、英语怎么样 5、项目 6、开源社区、开源项目讨论
第二篇
1、进程和线程区别,进程优势 2、进程通信方法,什么时候用有名管道,共享内存如何实现 3、环形打印矩阵 4、地址分配,内存地址如何访问内存条上面的物理地址 5、四次挥手,为什么四次吗,第二次和第三次之间叫什么名字,四次结束后 2MSL 叫什么名 字,为甚要等 2MSL 6、数据库事务,如何防止多个事务同时操作同一个数据,具体 7、LFU 实现 8、分苹果问题,如何从任意几个箱子拿出苹果能够凑齐一个整数
1、strcpy 实现代码 2、awk 知道吗 3、linux 哪个命令知道多少客户端连接服务器的
第三篇
1、自我介绍 2、写一个方法,打印参数字符串中“成对”括号的对数和下标,如a((b(c(d)e(f)gh))i 有 4 对,下标分别是 6_8,10_12,4_15,2_16 3、用 SQL 语句把 A 表的b 字段改到B 表,并把数据转储过去,B 表有一个A_id 的字段 4、写一个方法实现分组游戏:一批人随机分成几组,根据属相构成不同集合,现对他们分 组进行合并,要求合并后分组间属相集合之间没有交集,如{龙,兔,鼠,牛}、{龙,鸡,狗}、 {猪、羊}、{龙}合并后变成{龙,兔,鼠,牛,鸡,狗}、{猪,羊} 5、说一下下面 Linux 命令的作用:ps/sort/awk/join/pwd/iostat/vmstat/top/kill 6、有 8 枚完全一样的奥运金牌,其中有 1 枚比另外 7 枚略重,现有 1 个天平,最少几次能 找出这枚较重的金牌? 如果是 9 枚,最少几次?
1、说一下最近做的项目,根据项目提出的问题 2、数组中包含 n 个整数,如何找出距离某个整数最近的 m 个数 3、平面中包含 n 个点,如何找出距离某个点最近的 m 个点 4、参数传递时,传值和传引用有什么区别 5、虚函数是如何实现的 6、动态编译和静态编译的区别,cpp 文件变成可执行文件的过程 7、进程和线程的区别 8、进程间通信方式、线程间通信方式 9、进程同步与互斥
第四篇
1、首先自我介绍 2、介绍一下项目?局域网监控? 3、UDP 和 TCP 区别?陈硕网络库怎么实现?TCP 为什么需要三次握手,四次挥手? 4、TCP 状态机,timewait 和 closewait 是怎么回事?为什么是 2MSL? 5、你怎么理解非阻塞?怎么设置?errno 线程安全么?C++重载函数const 可以作为重载 依据么 6、epoll 函数理解?两种工作模式区别? 7、线程和进程的区别?线程共享哪些内存? 8、进程间通信方式?PIPE 怎么回事? 9、两种信号不能屏蔽?子进程继承父进程的什么?fork,vfork?COW? 10、孤儿进程?僵尸进程? 11、进程 sigaction 和signal 区别? 12、多线程编程,静态管理,读写锁的实现?compare_swap 函数?CAS? 13、死锁的四个必要条件? 14、TCP 的拥塞控制? 15、编程题,求两个链表的差别
1、首先自我介绍 2、如何设计一个hash 表?你会考虑哪些因素?哈希函数怎么选择? 3、hash 表的容量你怎么设计,负载因子怎么考虑? 4、如果有一个数据库,大量的读和和少量的写,你会怎么处理?考虑哪些因素? 5、如果要加锁是在数据库加锁好一些,还是在服务端直接加锁? 6、数据库联合索引的命中问题?如何查看是否命中 7、B+数和红黑树的区别?Redis 移植性怎么做? 8、C++怎么由代码转换成二进制数据?动态链接是怎么回事?每个过程都有些什么工作? 9、出了一道链表两两反转的问题
第五篇
1、三分之二的时间在问项目,当时简历上只做了 HTTP 服务器、tcp 群聊和扫雷 2、HTTP 多线程版本和 Epoll 版本的优缺点对比 3、Epoll 的底层实现、LT 和 ET 区别 4、HTTP 报文的编码问题 5、GET 和POST 区别 6、TCP 如何解决黏包问题 7、说说 TCP 三次握手、四次挥手 8、关于迷宫,如何找最短路径,如何判断已经找完所有路径 9、从玩家角度设计一个扫雷外挂 10、了解哪些 Linux 指令和工具 11、gdb 打断点底层实现原理 12、进程和线程的区别,何时用多进程、何时用多线程 13、线程互斥锁底层实现原理 14、堆排时间复杂度、空间复杂度以及稳定性分析 15、大小端、内存对齐、int 类型的大小
1、开局先写三个代码 1、从一个 sockfd 中读取字符,判断是否含有目标字符串,30s 后未找到返回 false 2、实现 memove 3、实现 10 进制转任意进制 2、HTTP 服务器(客户端)发送、接受数据哪些要设置成非阻塞 3、说说你对虚拟内存的理解,MMU 映射,多级页表 4、什么情况下会发生段错误 5、你的服务器出现的 bug,你是如何解决的 6、你还有什么想问我的吗 第六篇 一面 2018/9/11 来自于牛客网 1、三次握手四次挥手,和socekt api 的对应 2、map 的实现,红黑树,时间复杂度多少,红黑树的插入过程,详细描述 3、如何实现红黑树的插入有序,即插入顺序和遍历顺序相同,方法是采用最小堆来实现优 先级队列记录插入顺序 4、操作系统调度算法 5、操作系统同步的算法,互斥锁操作系统是怎么实现的,自旋锁的使用 6、场景题,如何实现分布式集群的每个url 的访问量统计
1、socket 如何建立处理一个连接,描述过程,从 bind listen 开始说起 2、那成千上万连接呢 3、又问如何处理 io 密集型的请求 4、如何统计一个目录下所有文件中含 abc 的行 5、topN 问题,问的很详细,给他讲明白,基本代码都能写出来了。二种方法,partition 和最小堆的解法都说了 6、TCP 和 http 那个比较熟悉? 7、tcp 报文字段都有啥,如何实现字节流控制 8、一个网站有成千上万的访问量,如何处理请求 9、负载均衡器性能达到瓶颈怎么办? 10、讲一下 STL deque 11、了解 docker 吗
第七篇
1、看你实习做的跟rocksdb 相关,简单介绍下rocksdb 2、介绍下 LSM tree 3、介绍下 B tree 4、看你简历上有写机器学习,你简单介绍下你会的机器学习算法 5、多进程与多线程的区别 6、数据库索引为什么要用B 树 7、数据结构设计题 8、平时喜欢看开源项目吗
1、你愿意在北京工作吗,父母也支持吗 2、你以后想从事什么方面的工作 3、你在学校里是怎么学习的
第八篇
1、define 和 typedef 的区别是什么 2、数组和链表的区别是什么,增删改时候复杂度各是多少 3、快排是稳定的排序吗?为什么? 4、TCP 三次握手和四次挥手的过程,为什么是四次挥手?如果客户端和服务端都没有发起 断开链接,这个时候链接会断开吗? 5、 一个空类 A,sizeof(A)=? 为什么? 6、 算法题:给一棵二叉树,问左视图能看到哪些节点? 7、 高并发怎么实现? 8、 如果服务器很慢,给你 5min,你会查看哪些内容?
1、 你考研吗?为什么? 2、 你的职业规划? 3、 项目中的问题 第九篇 一面 2017/9/21 来自于牛客网 1、进程内存模型 2、进程调度 3、线程同步 4、虚页内存 5、open 怎么直接写硬盘 6、轮询,中断,DMA 的各自特点和优缺点 7、TCP 的最大负载和最小负载有何意义 8、手写单链表反转 9、结合代码讲了下异常安全的处理情况
1、C++析构可不可以抛异常 2、项目问题
第十篇
1、自我介绍一下 2、你来说说你这个 ip 地址查找的问题 3、查找 ip 地址里面我们这个字符串的比较,这个 ip 字符串比较很长的话,而且这样比较 会非常耗时,有没有办法把字符串比较优化一下? 4、问了下 linux 中 core 的问题 5、问了下跳台阶的复杂度问题,当时我的空间复杂度为O(N),面试官问我能不能优化一些 6、问我K 路归并还可以如何优化? 7、linux 中常用命令及用法 8、你那个项目你觉得最有收获? 9、linux 中 epoll 和select 的机制和应用场景
1、自我介绍 2、c++虚函数和继承的机制 3、c++类和类对象在内存中的结构 3、c++的模板,模板特化、偏特化 4、c++中 vector 的底层结构、迭代器失效问题,map 的底层结构,map 的查找删除过程 5、linux 中加锁的方法、线程安全问题等 6、linux 中socket 通信需要用到的函数 7、TCP/IP 握手挥手的过程,http 协议,路由选择协议有哪些? 8、两个文件,各存放 100 亿个 url,每个 url 各占 64 字节,内存限制是 4G,找出 a、b 文件共同的 url+解决思路 9、树里面两个节点最近的一个公共祖先+解决思路+写代码
求职必备刷题官网:https://github.com/bennyrhys/interview
【更多互联网公司笔试面试真题请关注“让我遇见相似的灵魂”公众号】