1.快手
一面:
问了问计网+os,随后手撕以下几个内容:
实现单例模式
实现栈
栈支持模板
栈支持多线程
二面:
链表排序并用数学证明时间复杂度
2.B站
一面:
多进程、多线程、协程、阻塞IO、非阻塞IO、异步IO、同步IO
http2.0、https与http区别等等
shared_ptr底层、引用计数为0的时候,如果不让对象析构。
pb arena调用析构?
性能优化等
二面:
项目+
C++迭代器有哪些、STL容器等等。
3. 深信服
一面:
手撕下面这道题:
一个字符串,由abcdefghijklmnopqrstuvwxyz这26个字母组成。
如果其中某个子串由连续字母组成(即前后两个字符在字母表上相连),且单调上升,或单调下降,则称该子串为连续字母串。
编写程序,寻找某字符串的最长连续字母串。
输入描述:
一个长度不大于10000的字符串。
输出描述:
最长连续字母串的长度;
示例1
输入
aaaaaaaaaaaa
输出
1
二面:
手撕下面这道题
在两个长度相等的排序数组中找到上中位数
限定语言:C、Python、C++、Javascript、Python 3、Java、Go
给定两个有序数组arr1和arr2,已知两个数组的长度都为N,求两个数组中所有数的上中位数。
上中位数:假设递增序列长度为n,若n为奇数,则上中位数为第n/2+1个数;否则为第n个数
[要求]
时间复杂度为O(logN)O(logN),额外空间复杂度为O(1)O(1)
示例1
输入
[1,2,3,4],[3,4,5,6]
输出
3
说明
总共有8个数,上中位数是第4小的数,所以返回3。
示例2
输入
[0,1,2],[3,4,5]
输出
2
说明
总共有6个数,那么上中位数是第3小的数,所以返回2
三面:1.继承有哪些 2.几种继承的状态,考public之类的 3.如何禁止成员函数修改成员变量 4.如何比较结构体 5.c数组用法及注意事项 6.socket错误码 7.1号进程及名字 8.孤儿与僵尸进程 9.进程通信 10.自己写过哪位算法 11.有啥想问的
4.smartx提前批
一面:
信号量与互斥量,为啥要设计互斥量,两者用途一样不。备份方面的点聊一下 https加密过程 cpp全局变量与局部变量 多进程,多线程 o(n)实现第二大数 无重叠区间合并
二面:
进程,线程切换 实习经历 项目经历 备份经历 模板继承角度谈多态 cpp11特性有哪lambda底层实现 lambda与functor区别 二叉树求总和
三面:
自我介绍 进程与线程 有哪些socket inode 多进程通信/同步 虚拟化 km... 分布式存储 arp mac多少位 网络每一层 存储,备份,虚拟化,做哪一个 选个项目聊聊 base地 谈谈对团队与氛围,公司的看法
5.依图
一面:简单问了一下网络知识、操作系统知识,问的很少,不太记得了,就不写了,主要是手撕两道算法。第一道:leetcode原题151. 翻转字符串里的单词 第二道:左上角到右下角距离及路径
二面手撕一个字符串有AB字符,如果不重叠返回true,重叠返回false。
string s
'A' / 'B'
"ABBA" -> true
"ABA" -> false
"ABABA" -> true
"AB" "BA"
三面没啥好说的,基本是开源项目经历、开源经历等等