版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1面
1.编程题:给你一个可以生成0-6随机数的函数,设计一个可以生成0-9随机数的函数
面试官提示的思路是:先生成两位0-6的随机数,然后7进制转1机制,如果转化结果<=39,就用结果对10求余,因为生成0-39的概率是相等的,所以获得0-9的概率也相等
2.编程题:给你两个数组,求并集
3.操作系统:常用的线程调度算法有哪几种?
有先来先服务,最短作业优先,基于优先权的调度算法,时间片轮转等
4.操作系统:线程和进程的区别?
5.操作系统:线程同步有哪几种方式?
2面
1.C++:有哪几种智能指针?
2.C++:简述模板以及为什么使用模板的时候#include<***.hpp>?
3.编程题:用递归和迭代两种方式写反转二叉树
4.编程题:每k个一组反转链表
5.数据库:redis和其他数据库的区别是什么?什么时候选择redis?
5.设计模式:写一个单例模式
3面
1.计算机网络:TCP/IP4层模型有哪4层?
2.计算机网络:mac层寻址过程
3.编程题:从文本中查找敏感词
面试官希望使用前缀树来做这道题
4.编程题:给你一个含有()和[]的字符串,输出括号每对括号的位置下标如(1,2),如果有不合法括号返回空
5.操作系统:有哪几种IO模型?阻塞IO在底层阻塞在了哪里?
拓展
听到的一些别人的问题
1.编程题:第k大的数
2.编程题:判断一个二叉树是不是完全二叉树
3.编程题:反转链表
4.编程题:用栈实现队列
5.编程题:全排列
6.编程题:从二维数组中查找数(每列递增,每行递增)
7.大数问题:找到1亿个数里出现次数前k大的数,内存有限制