阿里 / 百度 / 快手 / 网易 / 小红书实习面经合集

个人在七月份的一些实习面经~

P.S. 都是实习!实习!实习面试!重要的事情说三遍!!!

阿里夸克(搜索引擎 - C++)

C++:

  • 左值引用和右值引用
  • std::move()

LeetCode:

  • 多数元素(No. 169)

百度(音频引擎 - C++)

C++:

  • const 指针
  • constexptr 与 const 指针的区别(编译时进行常量的求值和运算)
  • new 和 malloc 的区别(类型安全、构造和析构、分配失败处理、大小计算)
  • 内存对齐(变量、函数、虚函数、静态变量、嵌套结构体)
  • vector 数组和普通数组的区别(要点:为何能追加元素)
  • vector 如何判断应该扩容(size 和 capacity)
  • vector clear() 是清空所有元素还是清空内存
  • 如何真正的清空 vector 内存(提示:与空 vector 做 swap 操作)
  • map 和 unordered_map 的底层实现、区别、查找的时间复杂度、应用场景
  • map 插入一个元素的时间复杂度(O(logn)
  • 类中 static 函数能否声明为虚函数(不能)
  • 构造函数能否声明为虚函数(不能)
  • 还有哪些函数不能声明为虚函数(内联函数、友元函数、非成员函数)
  • 如何保证类的对象只能被开辟在堆上(提示:将构造函数声明为私有、单例)
  • C++ 源文件编译流程(预编译 .i、编译 .o、汇编 .s、链接 .exe

Linux:

  • 查看指定进程占用的端口号(netstat & grep)
  • 打印某一列并按空格分隔(awk -F

MySQL:

  • MVCC 实现原理
  • 幻读是什么
  • 如何解决幻读问题(间隙锁)

OS:

  • 如何使用 gdb 排查多线程中哪个函数出现了死锁(info thread & thread 2 & bt
  • 一个线程会发生死锁吗(比如:多次尝试同一个锁、递归获取锁)
  • select / poll / epoll 的区别
  • epoll 底层实现
  • ET 和 LT 的区别

LeetCode:

  • 前 K 个高频元素(No. 347)

Expand:

  • 静态绑定和动态绑定
  • 虚函数表在哪个阶段被分配的(编译)
  • 虚函数表存在哪个区(常量区)
  • delete 和 free 的区别(类型检查)
  • push_backemplace_back 的区别
  • 浅拷贝和深拷贝的区别(举例说明)

快手(AI 软件开发 - Java - 一面)

Kafka:

  • 与其他消息队列相比、为什么 Kafka 性能更好(批量处理和异步、每秒千万级)
  • 多副本备份(Replica)
  • 主节点挂了怎么办(选举新的主节点)
  • 新的主节点是如何选举的(Zookeeper 一致性协议选举)
  • Kafka 基本架构(Broker、Topic、Partition、Group)

Redis:

  • ZSet 底层实现(跳表)
  • 介绍一下跳表及其插入、查找、删除的时间复杂度(均为 O(logn)
  • 过期淘汰策略(惰性删除 + 定期删除)
  • 持久化策略(AOF 和 RDB)
  • 主从节点如何同步数据(RDB 全量 + AOF 增量)
  • 一个新加入的从节点如何追上主节点(增加从节点性能、减少主节点写负载)

Network:

  • 介绍一下三次握手和四次挥手
  • 为什么不能是三次挥手(需要传输和处理数据)
  • 第一次握手可以传输数据吗(不可以)

gRPC:

  • 与 HTTP 相比 gRPC 的优点
  • HTTP 和 gRPC 哪个传输效率更高

MySQL:

  • 什么是聚簇索引
  • 聚簇索引和普通索引有什么区别
  • B+ 树和 B 树有什么区别
  • 什么是覆盖索引
  • 什么是回表
  • 解释一下不可重复读、脏读、幻读以及在什么情况下会出现
  • 如何解决幻读(间隙锁)

Personal:

  • Redis 分布式锁是如何实现的
  • Callback 回调函数是同步还是异步的

LeetCode:

  • 二叉树最大宽度(No. 662)
  • 环形链表(No. 141)

小红书(机器学习平台开发 - C++)

C++:

  • 介绍一下虚函数(多态)
  • 如何用 C 语言实现 C++ 虚函数(定义虚函数表、初始化虚函数表指针)
  • static 关键字
  • 能否在普通函数内部声明 static 变量、作用是什么(可以、全局变量)
  • 什么是内联函数(将函数代码直接插入到调用点、例如 add(x, y) 直接变为 x + y
  • 内联函数为何能提升执行效率、举例说明(普通函数需要传递参数、创建和销毁栈帧)
  • 一次函数调用在编译过程是什么样的(关键:将函数返回地址压入堆栈或寄存器中)

Shell:

  • grep & awk

LeetCode:

  • 滑动窗口最大值(No. 239)

快手(AI 软件开发 - Java - 二面)

Golang:

  • 如何理解 Go 线程和协程(协程是轻量级线程)
  • 为什么 goroutine 性能更好(轻量级、并发调度、channel)
  • 什么业务需求要开 goroutine
  • 普通的加减乘除(函数)计算需要单独开一个 goroutine 吗
  • n 个协程和一个协程做计数哪个效率更高

OS & Network:

  • 如何判断服务器性能是否符合预期、或达到性能瓶颈
  • 客户端(多线程)和服务器(多线程)通信需要建立几个 TCP 连接(一个)
  • 服务器如何区分来自客户端不同进程的 TCP 报文(源 IP 和端口号)

网易(全栈开发)

Docker:

  • 介绍一下底层 cgroup 和 namespace
  • 经常使用哪些命令

MySQL:

  • 说一下表锁和行锁
  • 写一个能够触发行锁的 SQL 语句
  • 什么情况下能触发记录锁、是否需要为索引

Golang:

  • goroutine 异常退出能释放 Redis 分布式锁吗(不能)

Expand:

  • join 和 detach 线程的区别(join 阻塞等待、detach 后台运行)
#我的实习求职记录#
全部评论
你怎么什么都会😨😨
5 回复 分享
发布于 2023-07-29 20:35 北京
干活满满,火速学习
3 回复 分享
发布于 2023-07-29 19:17 广东
tql 今天对着这个面经补了一整天
3 回复 分享
发布于 2023-07-30 21:04 广东
真牛啊
2 回复 分享
发布于 2023-07-31 20:33 北京
1 回复 分享
发布于 2023-07-29 22:21 广东
1 回复 分享
发布于 2023-07-30 17:08 上海
tql 今天对着这个面经补了一整天
1 回复 分享
发布于 2023-07-30 21:43 广东
你真的好猛啊
1 回复 分享
发布于 2023-07-31 00:18 广东
太强了吧全栈人才
1 回复 分享
发布于 2023-07-31 01:31 上海
“如何保证类的对象只能被开辟在堆上(提示:将构造函数声明为私有、单例)” 老哥这题不全哦,是将析构函数声明为私有 可以让类对象只被开辟在堆上。因为栈上变量需要自动调用析构函数。
1 回复 分享
发布于 2023-07-31 12:56 北京
佬的八股,是我可望而不可及的水平
1 回复 分享
发布于 2023-08-02 15:52 上海
太强了
1 回复 分享
发布于 2023-08-02 17:16 浙江
佬真的无时无刻不在面试
1 回复 分享
发布于 2023-08-02 18:37 北京
牛逼
1 回复 分享
发布于 2023-08-02 23:22 湖北
校友牛的👍
1 回复 分享
发布于 2023-08-07 09:49 陕西
跪了,佬最后去哪了
点赞 回复 分享
发布于 2023-07-29 18:45 广东
跪了,什么offer收割机
点赞 回复 分享
发布于 2023-07-29 18:46 广东
好难呀,佬
点赞 回复 分享
发布于 2023-07-29 20:40 湖南
m
点赞 回复 分享
发布于 2023-07-30 11:28 浙江
都过了然后选百度是吧
点赞 回复 分享
发布于 2023-07-30 22:06 江苏

相关推荐

社区工程一面(50min)拷打实习native层怎么调Java层函数。了解Native层和Java层内存模型的差异吗你在字节的工作?Activity的生命周期onStart和onResume的区别你怎么学安卓的了解View的绘制吗ViewGroup里面一些子View,是怎么个绘制流程如果ViewGroup自己有内容呢Layout是怎么做的点击屏幕发生的事具体场景,一个ScrollView里有个按钮,点击按住不动,向上滑动,事件分发过程是怎样的讲讲Java里的集合ArrayList忽然LinkedList的区别是什么Hash集合和Tree集合的区别是什么了解过Java中的并发吗,多线程间并发处理有哪些方法讲讲synchronized的特点讲讲volatile线程和协程的区别他们的上限有区别吗http和https的区别https握手过程算法题先增后降的数组去重并排序二面(37min)讲讲腾讯实习讲讲ClassLoader的双亲委派机制PathClassLoader和DexClassLoader的区别native怎么调javacpp的string转jstring的两种方式讲讲项目为什么用flutterDart是单线程模型,它内部是怎么做多线程并发的继续拷打实习大厂代码你有没有觉得什么很恶心的问题,你怎么看这个问题有什么治理手段吗拷打项目安卓中Binder的原理?你会不会觉得客户端能深钻的技术不多算法题(口答)n个人发糖果,相邻的人高的一定比矮的拿的多,至少要多少颗糖果编程题写一个生产者消费者模式三面(45min)你更喜欢做业务还是sdkJava中new一个String会创建几个对象抽象类和接口有什么区别final关键字有什么用cpp从源文件到可执行文件经历了什么可执行文件在操作系统怎么运行的调用一个函数,栈空间怎么变化返回值是放在哪的看你做过JNI,怎么动态和静态注册JNI?cpp的线程怎么call java的方法需要注意些什么安卓中遇到ui卡顿了你会怎么排查有没有用过一些工具你觉得kotlin和java比有什么优势你刚刚提到了协程,那协程是怎么实现的讲一下Handler的实现原理介绍一个你认为做的比较好的项目讲讲你在字节的工作算法题用两个栈实现队列
查看52道真题和解析
点赞 评论 收藏
分享
01-04 14:58
已编辑
东北大学 Java
面试时间24-8-19... 整理一下上次找实习的面经🤗时长80min,节奏非常快,常规八股迅速过,很多问题说出关键词就打断了,继续深入。不过最后面试官会讲解且态度好,体验很好一、基础八股(较开放,问k8s是因为开源中使用了)1. 读过什么书,有哪些习惯or工具可以让你开发变得高效2. 你对云原生怎么理解(容器化、资源调度、大数据)3. docker和k8s的关系4. k8s核心组件 (控制层、节点组件、插件)5. 你说到有ETCD,讲讲为什么是ETCD6. ETCD满足CAP定理的那些(raft --> CP)7. 讲讲CAP定理,什么叫可用性8. 其他常用中间件的CAP:kafka,redis,zookeeper9. nginx使用  a. 反向代理,负载均衡(策略,7层还是4层)  b. 服务宕机会返回什么错误码(502)  c. 默认端口(80/443)10. linux内核怎么转发请求的(❌ 面试官应该想问iptable)11. 网页请求到服务端发生了什么12. DNS多级服务器怎么工作13. TCP如何保障可靠连接  a. 三次握手四次挥手  b. 序号、重传、校验和  c. 窗口、流量控制  d. 拥塞控制14. TCP分段的细节(❌ 没复习)  a. 面向字节流,MTU150015. HTTPS原理  a. 流程,对称非对称加密  c. 非对称的公钥私钥的作用:防篡改or身份认证?  d. 私钥加密的,公钥能解吗16. jdk中熟悉哪块 -> 锁17. lock和synchronized的区别和联系18. 公平or非公平(lock通过参数设置,默认非公平)19. aqs的原理(cas改状态位)二、中间件(mysql、redis、mq三选二)20. 讲讲redis线程模型21. select、poll、epoll22. redis作者为什么这么设计  a. 为什么不用多线程  b. 那redis6为何又加了多线程 b. 单线程缺点:大key、热key ---> 单次处理时间长,阻塞其他请求  23. 讲讲mysql整体架构  a. server层有哪些功能    ⅰ. 缓存:为什么新版本删掉了    ⅱ. 优化器:原理,怎么判断最优 ⅲ. a=1 and b=2 and c>3,建索引bc。走那些(优化器换位置,走bc)  b. engine层    ⅰ. innodb结构,插入一条数据的流程(buffer pool、日志的写时机、树中的维护)    ⅱ. b+树复杂度,跳表的复杂度,为什么不用跳表(io少,易维护,支持事务。面试官补充:都是logN,但b+树的底为m,跳表的底为2)    ⅲ. 为什么索引越小,性能越好(相同页存的更多,降低树高度,io少)三、算法:三个线程轮流按顺序输出ABC 四、反问1. 岗位核心工作2. 问最快多久入职。。。面完20分钟约二面#阿里##实习##面经java#
查看25道真题和解析
点赞 评论 收藏
分享
01-06 21:38
已编辑
门头沟学院 算法工程师
滴滴 地图部门算法 1095, sp, n*15
点赞 评论 收藏
分享
评论
59
317
分享

创作者周榜

更多
牛客网
牛客企业服务