秋招面经分享
百度 C++/PHP/GO开发
一面
上来手撕快排,没掌握牢,花了快20分钟才调通,然后二叉树的广度优先遍历,问如果从最后一层开始遍历怎么做。没想明白。。。
-
基础八股文:面试官不懂C++,所以感觉应该是在网上找的题目。
mysql索引优缺点,何时失效?
进程线程区别,何时用进程何时用线程;
TCP三次握手,四次挥手,问我知道吗?我说知道就跳过了;
指针引用的区别;
堆栈溢出发生在什么时候; 我答的函数递归调用层数太多时可能发生,感觉答得太简略了;
堆栈尺寸设置过小, 递归层数太深, 动态申请内存后没有释放
c++ 三大特性;
简历相关:这块答得很不好,感觉一方面是自己简历的东西跟人家不匹配,另一方面是自己也没有说好。面试官说我没引导着她发现亮点。。。
二面
自我介绍 + 一个项目
算法题:1.自己实现一个字符串压缩函数,例如“aabcccccaaa”变为“a2b1c5a3”
思路:遍历过程中记录个数。我这里把数字转字符的时候用了(“0”+count)但是这个只适合个位数的情况,所幸面试官没发现,可以用to_string(count)转成字符; 2. 重排链表。 leetcode原题
2. linux进程间通信方式;管道 消息队列 共享内存加信号量 socket套接字 信号 3. Linux 消息队列是咋实现的?答不知道,又问我数据结构栈和队列,我顺便说了下c++标准库的stack和queue; 4. 问我为什么需要进程间通信? 我回答的很口语化没想到会问这个问题。 (网上找的)数据传输:一个进程需要把它的数据发送给另一个进程 通知事件 资源共享 进程控制 进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联, 不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符)。但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信
没问计网和数据库
反问:技术栈?go
我有哪些需要改进的? 代码风格 我手撕的两道题都直接命名函数为func(),被面试官说了,说直接写成汉语拼音也好。。
三面
总结:秋招第一场面试,也是第一个意向,还是非常感谢一面的面试官,真的很好。另外听说有的三面是技术面,我这个是非技术面。
美团优选后端开发
一面
自我介绍
介绍简历的项目 来提问(webserver 压力测试)
计网
- 七层模型 四层模型
- TCP UDP 区别
- 如何用UDP实现TCP连接
- get 与post方法的区别
- http状态码
- http与https的区别
操作系统
- 进程线程区别
- linux 查看进程运行状态的命令
- linux命令。。。
算法题
1,写一个快排 没运行
2, 匹配括号的最长字串长度(没做出来, 凉凉)
二面
- 自我介绍
- 做题 股票3 没做出来换了个 二叉树的最大路径和
- c++虚继承的的底层实现
美团地图移动端
一面 85min
- 自我介绍 + 项目介绍
- 计网
- http协议各个版本, 区别,发展变化
- http与https区别
- get post方法区别
- 问了tcp与http里的keep-alive有什么区别
- 发送http请求的全过程
- 三次握手 四次挥手的过程
- 拥塞控制算法
- 线程池原理 线程池几种状态
- tcp如何组包
- 操作系统
- 虚拟内存机制
- C++
- 面向对象三大特性
- c程序编译链接过程
- C能重载嘛
- c程序运行前会做什么没懂想问啥
- 指针和引用的区别
- const 和define的区别 有缺陷
- malloc new 区别
- 浅拷贝深拷贝
- 算法题 判断链表是否有环 实现shared_ptr
二面 40min
自我介绍 问我对移动端了解吗 有没有下去学习一下
HR面30min
总结:美团的面试体验非常好,点个赞。另外,一开始后端岗位的两轮面试题都没做出来,后悔没把股票系列的刷完。。
字节跳动 后端开发飞书
一面 48min
- 自我介绍 说自己是从算法转开发的 问我为啥转开发 简单介绍了下自己研究生做的事
- 问基础:
- 操作系统内存管理
- c语言中的struct 与union的区别
- 大端小端
- 动态语言静态语言
- 数据结构里面的图存储结构, 遍历方式
- 树的种类
- b树与b+树的区别,应用场景
- 数据库为啥用这两种结构
- python 列表解析式 list comprehension
- 算法题:二叉树和为某一值的路径(剑指offer原题) 数据库 查询每个工种得分平均值,结果保留三位小数,降序输出;
二面 40min
无自我介绍
介绍了一下做的httpserver项目 这里项目介绍的不好 还是不够熟悉不知道咋说
引出来计网的基础知识:
- DNS查询 DNS劫持是啥 如何防止
- HTTP和HTTPS的区别 SSL链接怎么建立的
- 如何应对高并发请求:线程池, IO复用select poll epoll
- poll 与 epoll的区别, epoll的LT 和 ET模式
C++重载与重写的底层实现;
算法题:无重复子集;
数据库:
- 数据库隔离级别
- MySql 默认隔离级别 可重复读+间隙锁 (防止幻读) 间隙锁咋实现的(不知道)
- MySql 锁 表锁 行锁 (咋实现,不知道。。。)
反问
三面 40min自我介绍 简单问了研究的方向
计算机网络
- IPV4 地址划分 一共几类 外网地址 内网地址
- 简述tcp三次握手 四次挥手
- tcp粘包问题是啥 怎么解决 (关闭nagle算法, 格式化数据, 发送长度)
- tcp 滑动窗口
操作系统
- 进程、线程、协程的区别;
数据库
- mysql 索引用的什么数据结构
- b+树特性
- 出了一道数据库的题 分组查询
算法题
- 股票的最大利润 LC122 差点翻车
总结:字节的效率真的很高,从面试到意向大概一周左右,总体来说,面试体验还是很好的。
拼多多客户端开发拼越计划
算法题:手撕单例模式+100万个数字找最大的10个 一面挂掉了
总结:感觉面试官很厉害,被暴打,设计模式没看过,挂掉了。后面再投提前批笔试0.25/4,哈哈,就没有后续了。
京东C++研发
一面
- 自我介绍 + 项目介绍
- Linux分配内存方式 如何解决内存碎片问题的
- 红黑树、B树的特点与应用场景
- 进程间通信方式
- 线程进程区别
- 线程同步机制
- 锁的类型
- 没有写题
二面
- 自我介绍 + 项目介绍
- http 与https 的区别
- epoll 与 select 区别
- vector扩容机制 问我知不知道vector缩容机制 不知道 查了网上说是swap?
- map底层数据结构是啥
- map 与unordered_map的区别
- hash_map的实现机制
- http状态码
- post 和 get的区别, 哪个是幂等的
- c++多态实现机制
- 问我知道哪些http请求方法put
- 数据库的acid特性
- mysql的两大存储引擎的区别 myisam支持表锁嘛? 支持
- 了解哪些索引
- 场景题:设计一个选课系统 创建数据库表
- 场景题:实现一个短连接到长连接的映射
HR面
总结:面试官非常有礼貌,甚至一面面试官大叔称我为“您”,问的还挺基础的,场景题答得不太好。
阿里CTO线智能引擎
一面 - 自我介绍 加 项目简单介绍
基础八股
- http 各个版本的介绍 变化
- tcp三次握手 三次握手能不能两次
- 介绍c++运行时多态 实现机制
- 介绍内联函数以及内联函数能不能是虚函数
- 析构函数为什么要是虚函数
- 构造函数能不能是虚函数
- 介绍移动构造为了解决什么问题
- stl里的vector咋实现的 内存分配
- vector push_back与emplace_back 的区别
- 什么是二叉搜索树
算法题 - (1) 在二叉排序树里找100个节点的公共父节点
- (2) 子集(无重复)
二面
自我介绍 + 项目简单介绍
八股
http服务器如何应对高并发场景? IO复用 线程池
c++多态和重载的区别, 使用场景
构造函数和析构函数能是虚函数嘛?为什么
智力题 用不均匀硬币等概率产生0 1
优化join
算法题
合并K个有序链表
三面
实现链表快排。
吐槽:阿里这次面试让人挺无语的,三面完之后推到另一个部门,那个部门的人跟我说我这个后天流程就结束了,所以得赶紧面。然后面试只做了两道题,就问我有没有什么想问的。甚至还问我,是不是觉得这次面试很奇怪,只做了题就结束了。我问他如果这轮过了的话,还有几面,跟我说还有两面,我再问不是说后天流程结束吗?然后就支支吾吾不知道在说啥了,哈哈,虽然表现的很明显的KPI,但是我也没有生气,只是感觉很搞笑。