4/18 钉钉实习一面 通过
1. 对C++多态的理解
2. sizeof运算符、字节对齐和虚表指针
3. const修饰变量放在不同位置时的含义
4. 函数传参有哪几种方式
5. 是否可以返回局部变量的引用
6. 运行时多态的实现原理
7. 内存泄漏的几种原因,循环引用是怎么回事
8. 智能指针有哪几种,各自有什么应用场景
9. 基类对象的指针转换为派生类对象的指针使用哪一个类型转换运算符
10. 可执行程序由哪几个部分组成
11. json文件了解吗
12. 两个线程同时读写一个vector对象是否安全
13. http tcp ip协议各自工作在七层网络模型中的哪一层
14. http https的区别
15. tcp协议可靠传输如何保证
16. 文件上传太慢,可能由什么原因导致
口述思路:
1. 10001~10100拿走两个数,设计算法找到拿走的两个数
2. 1亿个数字中找到最大的10个数字
3. 1亿个文件,每个文件中有1亿个数字,找到最大的40个数字
手写代码:
将前后均可能含有空格的字符串按单词逆序,如 " hello i am a coder " 改为 "coder a am i hello"
4/21 钉钉实习二面 未通过
二面面试官应该是位技术大佬,问我一些项目的细节,讨论一面的笔试题和关于引用传参数的效率问题,
代码是否能够处理异常输入。最后讨论互联网的生态,对服务端开发的理解和对底层概念的认识。
手写代码:
1. 单链表逆序
7/13 阿里云实习一面 未通过
1. C和C++的区别
2. C++多态的实现原理
3. 指针和引用的区别
4. 常量指针和常量引用的概念
5. 什么是动态申请内存和析构函数
6. virtual关键字有什么作用
7. 纯虚函数的作用
8. STL有哪些容器
9. vector底层实现原理,扩容机制
10. 哈希表底层实现原理,碰撞解决方案
11. 红黑树的概念
12. 了解哪些常用的设计模式,回答模板方法、策略模式、观察者模式,然后逐个解释
13. 有哪些常用排序算法,各自的时间和空间复杂度
后面和面试官沟通才知道这是实习岗位,因为学校马上开学没有机会去实习,所以流程结束。
7/17 字节服务端一面 未通过
1. 进程有哪些状态,什么时候进入该状态
2. 有哪些进程调度算法
3. TCP可靠传输如何保证
4. 如何能够实现UDP可靠传输
5. 数据库索引底层用的是什么数据结构
6. SQL数据库回滚是如何实现的
7. virtual关键字的作用
8. 字节对齐的概念
9. STL有哪些容器,底层是怎么实现的
10. 什么是大顶堆,给定无序数组如何建立大顶堆
11. 堆排序有什么应用场景
12. 长方形类和正方形类哪一个应该做父类
13. 聊项目细节,在项目中担任什么角色,遇到过什么难点,如何解决
手写代码:
1. 元素互异的正整数数组中,找出和为给定值的所有数字组合,元素可重复使用
7/29 腾讯后台一面 通过
1. 指针和引用的区别
2. TCP和UDP的区别
3. TCP拥塞控制算法
4. 三次握手和四次挥手过程及状态转换
5. 网络编程有哪些API
6.epoll的实现原理,底层是什么数据结构
7. 同步阻塞与异步非阻塞的概念
8. C++多态的实现原理
9. 智能指针有哪几种,shared_ptr的实现原理
10. 数组和链表的区别
11. 栈和队列的区别
12. map底层的数据结构
13. 哈希冲突有哪些解决方式
手写代码:
由于业绩优秀,公司给小Q放了n天的假,身为工作狂的小Q打算在假期中工作、锻炼或休息。
他有个奇怪的习惯:不会连续两天工作或锻炼。只有当公司营业时,小Q才能去工作,只有
当健身房营业时,小Q才能去健身,小Q一天只能做一件事。给出假期中公司、健身房的营业
情况,求小Q最少需要休息几天?
8/1 百度语音技术部提前批三连面 通过
1. 进程和线程的区别
2. 虚拟内存的概念
3. 进程间通信有哪些方式,哪一种方式代价最小
4. 操作系统处理信号的过程
5. TCP和UDP的区别
6. 三次握手和四次挥手过程
7. 流量控制与拥塞控制的区别,二者的具体过程
8. 浏览器输入网址访问网站过程中发生了哪些操作
9. C++多态和模板偏特化的概念
10. 指针和引用有什么区别
11. 动态库和静态库有什么区别,如何理解动态库的“与位置无关代码”的含义
12. 左值和右值的区别,右值引用的概念及其应用场景
13. 类的内存布局,类中属性和方法的存储位置
14. 四种类型强制转换运算符及使用场景
15. 各种智能指针的实现原理
16. 设计一个类,不允许生成栈上的对象
17. 设计一个类,不允许生成堆上的对象
手写代码:
1. 给定点分十进制的有效ip地址,转换为整数形式的ip地址
2. 单例模式的实现
3. 判断二叉树是否平衡
8/5 腾讯后台二面 未通过
1. 聊项目细节
2. C++11新特性
3. 三种智能指针实现原理和使用场景
4. unique_ptr所有权转移的方式
5. delete和free的区别
6. overload和override区别
7. vector和list使用场景
8. map删除元素及迭代器失效的解决办法
9. 二叉树遍历的实现
10. 不用第三个变量交换两个整数的值
11. TCP四次挥手过程
12. 堆和栈的区别
13. 申请10M栈空间可能出现的问题
8/10 快手一面 未通过
1. struct和class的区别
2. malloc和new的区别
3. 虚函数和纯虚函数的区别
4. 构造函数可以为虚函数吗,为什么
5. TCP和UDP的区别
6. TCP拥塞控制的过程,这个过程有什么缺点,可以怎样改进
7. http协议细节
8. IPC有哪些方式
9. 多个线程互斥访问一个资源,如何实现
10. 多个线程互斥访问一个资源,要求无锁实现
11. 给定数组找到第k大元素
12. 给定数组找到中位数
13. 平衡二叉树的概念,5层平衡二叉树最少多少个节点
手写代码:
1. 小顶堆中插入元素
2. 之字形打印二叉树
8/11 阿里云一面 未通过
1. C和C++的区别
2. C++的多态实现机制
3. 如何用C实现面向对象
4. 是否可以用C实现多态
5. 内存对齐的原理、内存对齐高效的原因、禁止内存对齐的方法
6. static关键字的作用
7. 虚函数是否可以和静态函数互相调用
8. 纯虚函数的概念
9. 构造函数和析构函数是否可以为虚函数
10. STL有哪些组件
11. STL有哪几种容器
12. vector的增容策略
13. clear()函数的实现机制以及vector堆内存的释放方法
14. 进程和线程的区别
15. 线程独享的资源
16. 线程调度算法
17. 进程间通信方式
18. socket编程服务端和客户端API
19. 操作系统是否允许只有一个线程存在
20. 用户在键盘上输入字符到屏幕上显示字符操作系统做了哪些事情
口述思路:
1. 海量数据选取最大的10个数
手写代码:
1. 单链表逆序,要求递归和非递归版实现
8/14 哔哩哔哩一面 通过
1. 判断单链表是否有环以及确定有环链表的入环节点
2. 贪心算法与动态规划算法的区别
3. TCP三次握手与四次挥手过程
4. 服务器可同时建立连接的最大客户端数
手写代码:
1. 求一个无序数组中的第k大元素
2. 求一个无向图中是否有环
3. 单例模式的实现
8/15 腾讯后台开发一面 通过
1. TCP可靠传输如何保证
2. TCP拥塞控制过程
3. TCP传输中的TIME_WAIT状态
4. 数据库引擎有哪些,各自有什么区别
5. 数据库事务如何实现
6. 数据库次级索引如何实现
7. 操作系统的内核态和用户态区别
8. IPC方式,哪一种代价最小
9. C++多态实现原理
10. epoll和poll的区别
11. 边缘触发和水平触发的区别
手写代码:
1. 二叉树的最近公共祖先
2. 数组 [1, ......, n]可以生成的不同二叉搜索树的个数
8/19 腾讯后台开发二面 未通过
1. TCP与UDP区别
2. TCP分片长度
3. UDP的首部有哪些字段
4. TCP的流量控制与拥塞控制过程
5. TCP半连接攻击
6. TIME_WAIT状态出现原因
7. select和epoll区别
8. 哈希表的原理和哈希碰撞的解决方法
9.拉链法是否可优化,线性探测法如何确定给定元素是否存在
10. 红黑树的特性
11. B+树的特性
12. 数据库char类型与varchar类型的区别
13. 数据库左连接、右连接与内连接的区别
14. 乐观锁与悲观锁的概念
15. 事务的ACID概念
16. 进程与线程的概念
17. 操作系统的线程调度算法
18. STL的vector与list区别
19. 快排序的思想及优化算法
手写代码:
1. 判断给定字符串中左括号的最大深度
8/21 字节客户端一面 通过
1. C++11新特性
2. 智能指针的实现原理
3. 内存越界和野指针的概念
4. 内存泄漏的概念,哪些情况会出现内存泄漏,定位内存泄漏的方法
5. 多态实现原理
6. violate关键字的作用
7. 友元函数和友元类的概念
8. C++线程同步方法和使用场景
9. TCP的拥塞控制过程
10. TCP和UDP区别
11. 保证UDP可靠传输的方法
12. 欧拉公式在信号处理的作用
手写代码:
1. 0/1二进制矩阵中的最大全1子矩阵面积
2. 两个单链表的交点
8/25 网易互娱一面 通过
1. C++虚函数的实现机制
2. C++11新特性
3. 智能指针的概念
4. 右值引用的概念
5. static关键字的作用
6. 静态成员函数是什么
7. 纯虚函数与抽象基类的概念
8. TCP与UDP的应用场景
9. TCP三次握手,为什么不可以是两次握手
10. 堆排序与快排序的区别,各自时间复杂度
11. 网络编程有哪些API
12. I/O多路复用的概念
13. select与epoll的区别
14. epoll监听的底层数据结构
15. 在很多个ID中检查某个ID值是否存在,布隆过滤器
16. 单例模式和观察者模式
场景题:
1. 各个游戏角色发动技能时会有伤害,具有一定的伤害范围,如何优化对于每个角色的伤害计算?
手写代码:
1. 判断给定二叉树的左子树和右子树是否相同
2. 将给定数组中的全体奇数放在全体偶数前面
8/26 新浪微博一面 未通过
1. 字符数组和字符串的sizeof和strlen
2. C++引用的概念
3. 函数和变量前用static修饰有什么作用
4. delete和free的区别
5. 基类的析构函数不是虚函数有什么影响
6. int const* 和 int* const 有什么区别
7. shared_ptr的行为最接近原始指针,是否可以在任何地方代替原始指针并消灭内存泄漏
8. lambda表达式如何使用
9. auto和decltype如何使用
10. TCP三次握手和四次挥手及状态转换过程
11. 了解哪些常用的设计模式
12. 是否了解SQL的事务隔离,隔离级别分为几级,每一级代表什么含义
13. 数据库中索引的作用,主键索引和普通索引的区别
手写代码:
1. 反转单链表
2. 判断给定二叉树是否为搜索二叉树
8/28 猿辅导服务端一面 通过
1. 聊项目细节
2. C++11新特性
3. 智能指针实现原理
4. 操作系统有哪些常用命令
5. ps aux是做什么用的
6. netstat -apn是做什么用的
7. ifconfig输出了哪些信息
8. 子网掩码是什么意思
9. 网关是什么意思
10. 网络编程服务端有哪些API
手写代码:
1. 判断二叉树是否为二叉搜索树和完全二叉树
8/28 字节客户端二面 未通过
1. 操作系统的内核态和用户态概念
2. 陷阱指令和中断指令的区别
手写代码:
1.单链表每k个元素翻转
8/29 CVTE一面 通过
1. 聊项目细节
2. C和C++区别
3. C++的三大特性
4. 对多态的理解
5. 虚函数的实现机制
6. 虚继承的概念与构造函数执行顺序
7. 指针和引用的区别
8. 实现两个类A和B,使得A类只能被B类访问
9. 空类默认生成哪些函数
10. TCP可靠传输如何保证
11. 如何用UDP实现可靠传输
12. TCP拥塞控制
13. STL的map和unordered_map底层实现细节
14. C++11新特性
15. lambda表达式的作用以及语法
16. 智能指针作用
17. shared_ptr实现原理
18. 线程同步方式
19. 信号和信号量的区别
20. 对I/O多路复用中的“复用”的理解
21. epoll与select的区别
手写代码:
1. 判断链表是否有环
2. 升序的数组移位后寻找最小值
9/1 哔哩哔哩二面 未通过
1. 说一下自己比较熟悉的项目,项目中有什么难点
2. pthread_create、pthread_join、pthread_detach函数有什么作用
3. 是否了解RPC框架
手写代码:
1.无序数组找出最大的三个值
2. 自己实现优先级队列的push和pop操作
9/4 猿辅导服务端二面 通过
1. 解释项目中的相关问题
2. 七层网络模型和各层的典型协议
3. 进程和线程的区别
4. 索引底层的数据结构
5. 事务的ACID特性
手写代码:
1. 由前序遍历和中序遍历序列构造二叉树
9/5 CVTE二面 未通过
1. 有没有博客,有没有参加开源项目,是否了解C++框架
2. 画图解释项目流程和细节
手写代码:
1. 实现观察者模式,如何线程安全
9/7 华为无线基带三连面 通过
1. 聊项目细节,聊工作内容和方向
手写代码:
1. 最接近的三数之和
2. 柱子接雨水
9/9 网易互娱二面 未通过
1. 聊项目细节
2. shared_ptr如何实现线程安全
手写代码:
1. 数组能拼接出的最大正整数
9/12 拼多多一面 通过
1. 操作系统相关知识点
2. 进程与线程的区别
3. 栈帧存放的内容
4. 快表在进程切换和线程切换时是否刷新
手写代码:
1. 给定N行2列矩阵,表示二叉树节点之间的父子关系,前序遍历二叉树
2. 实现二叉搜索树数据结构,并实现插入节点和删除节点接口
9/12 猿辅导服务端三面 通过
1. 堆和栈的区别以及用堆不用栈的原因
2. fork()系统调用的执行细节
3. B+树的概念
4. 平衡二叉树和红黑树的区别
5. 不用B+树而用红黑树做内存索引的原因
6. vector的扩容机制
7. deque的实现原理
口述思路:
1. LRU缓存淘汰机制
手写代码:
1. 多路数组归并
9/16 小红书两连面 通过
1. 数据库索引的底层数据结构,聚簇索引与辅助索引,使用辅助索引要注意哪些问题
2. 数据库有哪些隔离级别,每一级代表什么含义
3. 是否了解redis
4. 红黑树的概念和平衡树的概念,二者的区别
口述思路:
1. 海量id中检查某一个id是否存在,布隆过滤器
2. 设计数据表,能够反映朋友圈的通知关系和更新关系
手写代码:
1. 在0代表海水和1代表岛屿的二进制矩阵中,找到相邻岛屿的数量
2. 嵌套信封,可以嵌套的最大层数
后面又陆续面了一些,面试过程没有做记录,以上就是全部了。
全部评论
(9) 回帖