声明:本文首发在同名公众号:王中阳Go,未经授权禁止转载。
先来唠唠
实习经历对于即将参加校招的学生来说至关重要。
那些在知名科技公司实习过的学生,往往在校招招聘中更容易获得青睐,有时甚至可以直接获得正式职位,免去了激烈的校招竞争。
实习不仅仅是简历上的一笔,它代表着你已经掌握了基本的技术开发能力,比如数据库设计、操作,以及HTTP请求和JSON响应处理等。此外,实习还能让你熟悉Linux环境和Git协作,甚至可能积累处理线上问题的经验,比如接口性能问题、数据库查询优化、系统资源管理等。
在面试中,如果你能够详细阐述这些问题的背景、定位和解决过程,将极大地提升你的竞争力。企业通常更看重实际操作能力,而非仅仅理论知识。
实习经验能够让企业相信你能够迅速适应工作并带来贡献。作为雇主,自然更愿意招聘能够立即投入工作的人,这样可以缩短新员工的培养周期。
目前,许多互联网企业已经开始招募暑期实习生,对于即将毕业的学生来说,把握这一机会至关重要。不要因为信息不足而忽略实习的价值,提前准备总是胜于临时抱佛脚。记住,早起的鸟儿有虫吃,不要等到校招才开始准备面试。
下面就是我为你们整理的面试真题,看一下有没有你心仪的公司吧。
先秀战绩
虽然不同的公司考察的侧重点不一样,但是咱们还是可以有针对性做准备。
就像这位同学说的,经过这么多场面试发现:
如果面试官对项目感兴趣项目就拷打的比较深(我觉得还比较easy);如果面试官对项目没兴趣就深挖知识点,拷打算法。(墙裂建议大家写好项目介绍!)
字节一面(技术)
- make和new的区别?
- mutex锁有几种模式?
- 讲一下GMP调度模型
- 两道语法纠错题(牛客上可以多刷一下)并解释为什么
- 一道算法爬楼梯
- 一道编程题:有100个并发线程,需要控制最多只有10个执行(有缓冲channel实现)并解释思路
- 知道哪些设计者模式?
字节二面(技术+人事)
技术面试
-
讲一下一个系统访问的整个链路过程
-
K8s有哪些组件?
-
怎么把node里的pod暴露给外面使用?
-
我对监控的理解,怎么判断一个系统是否已经挂调了?
-
如果让你对系统进行一个巡检,你会怎么做?
-
举例数据库巡检
-
用过云产品吗?讲一下你对公有云的理解
-
用过OPEN AI吗?你一般怎么使用?
人事面试:
-
从技术上和工作上上一家公司对你有什么成长?
-
在工作中和技术上学到哪些技能?举例说明
-
离职原因,未来职业规划
b站外包
-
旋转数组
-
mysql索引相关。
- B+树有什么特点?
- 为什么不用B树(查询的速度差不多,因为b+树数据都在叶子节点)。
- 非聚簇索引和聚簇索引的区别。
- 索引为什么要用id不用字符
-
Linux相关命令和场景
-
docker和k8s
梭翱信息技术
-
go语言特性(channel、map考察)
-
讲一下waitgroup的使用
-
知道模块化缓存吗?
-
知道分级缓存吗?
主要是一些缓存的应用场景为主。对于一些技术(redis、mq)的应用场景这部分比较欠缺
矢安科技
-
哪些数据结构是线程不安全的
-
Map为什么是线程不安全的
-
Channel阻塞可以实现什么场景(计数,令牌桶)
-
Mysql什么时候是行所什么时候是表锁
-
Mysql有几种错误读(脏读、幻读等等)
-
Mysql默认事务隔离级别是什么
-
假如有个sql联了多个表还有字查询,改怎么优化
-
你平常是怎么优化mysql的
-
Kafka为什么快?
-
Kafka怎么实现消息不丢失
-
Kafka是顺序写还是随机写
-
Go协程是怎么扩展内存的(找P要)
-
讲一下你对docker和k8s的理解
-
说一下某种集群的leader选举策略(举例了redis)
-
Redis中什么是主管下线,什么是客观下线。
-
聊一聊你对GRPC的理解。
-
为什么gprc传输比JSON快
-
少了json转为2进制
-
protobuf文件中字段名用后面的数字代替,进一步减少数据量(学到了)
场景题:
-
假如有大量定时任务需要在凌晨1点都准时开始执行,你会怎么做
-
假如消息发送过多导致大量堆积怎么处理
华苏科技(国家电网外包)
项目拷打(介绍项目+遇到的难题)
-
有缓冲channel和无缓冲channel的区别
-
了解gin的中间件吗,讲一下你对他的了解
-
select 满足多个case的时候怎么执行的。
-
如果有一个全局变量怎么保证并发安全。
-
CPU高问题如何解决?
-
知道哪些设计模式?
场景题:
我有一个方法,用来存储一些文件资源,有多种不同的存储方式,你会怎么设计这个方法(应该是要考察泛型的使用)
爱可生
介绍简历中的项目。
- 遇到的项目场景难题。
(他不太想听那种用技术选型方案来解决的常规问题,吹了一下systemtap)
-
讲一个技术栈中随便一个技术遇到的难题。
-
平时是怎么学习的。
整个面试几乎就没有技术性提问,一直在让我介绍项目,和遇到的问题以及我是怎么解决的,解决的思路是什么。
成都美大
项目拷打
-
讲一下mysql的索引是什么结构
-
讲一下sql一般是怎么优化的
-
Kafka消息堆积怎么处理
-
写一个方法的时候是传值好还是结构体好
场景题:
秒杀超卖怎么解决。(分布式锁+redis缓存)
矢安科技二面
一面的技术leader,没有聊太多的技术话题。主要是一些团队协作沟通上的问题
-
假如产品给你一个需求,你觉得不合适,和产品经理有冲突,你会怎么做?
-
你平时是怎么学习的?
-
假如给你一个活要求某个时间内快速完成,你又没学过,你会怎么做?
试探你是不是愿意加班
杉岩数据
项目拷打
其中问了为什么不用普罗米修斯去监控
-
假如你用于通知的Kafka挂了怎么办?有没有对Kafka进行监控?
-
channel的使用场景?
-
chaneel关闭之后再读和再关闭会发生什么?
-
map中的数据delete之后内存会回收吗?
-
GRPC请求和http请求有什么区别
腾娱
四道基础语法题
go
c := []int{11, 12, 13}
test(c)
log.Info("c=%v", c)
func test(s []int) {
for i := 0; i < 10; i++ {
s = append(s, i)
}
}
- c最后是怎么样的?
go
func main() {
values := []int{1,2,3,4,5,6,7,8,9}
for _,v := range values {
go func(){
println(v)
}()
}
}
- 求输出
go
func main() {
wg := sync.WaitGroup{}
for i := 0; i < 5; i++ {
go func(wg sync.WaitGroup, i int) {
wg.Add(1)
fmt.Printf("i:%d\n", i)
wg.Done()
}(wg, i)
}
wg.Wait()
println("exit")
}
- 求输出
go
func testDefer() (err error) {
defer func() {
if err != nil {
log.Error("defer: %s", err)
}
}()
log.Info("testDefer: %s", "test")
return handle()
}
func handle()error{
return fmt.Errorf("normal:test")
}
- 改造他让他变得有序
go
func main() {
values := []int{1,2,3,4,5,6,7,8,9}
for _,v := range values {
go func(){
println(v)
}()
}
}
杉岩二面
项目拷打15分钟
-
Kafka的消息丢失和消息重复消费。
-
Kafka和Rabbitmq的区别在哪?(架构、推和拉)
-
拉的模式有什么好处(控制消费速度)
-
使用分布式锁的过程中应用挂了?
-
优雅启停+defer
-
使用过期时间+自动续期
-
对象存储和文件存储的主要区别是什么?
-
分片上传是怎么实现的(文件合并hash一致性校验,引出文件秒传)
-
邮箱验证码功能怎么实现的。(redis+邮箱组件)
-
jwt的格式。加密算法、内容、过期时间
-
讲一下defer的原理
-
讲一下map的底层结构
-
map中hash冲突怎么解决(链表、红黑树)
-
讲一下go性能调优的案例(pprof,线程日志)
-
通过线程日志延伸出,怎么看一个线程在线程日志里是卡在循环还是事件等待?
-
线程日志上面会有标记。
-
讲一下mysql的事务隔离级别?
-
解释一下什么是可重复读?
-
事务实现的底层原理?
-
Redis持久化机制(RDB,AOF)
-
为什么持久化的时候是fork子进程处理
-
讲一下docker实现容器的基本原理
-
用过其他容器运行时吗
-
K8s有哪些组件?
-
你们是用什么control去构建deployment的?(没听懂)
衫岩三面
- 介绍上一家公司的业务和工作内容
- 了解上家公司的组织架构
- 我对系统监控的理解
- 如果让我设计一个监控系统需要注意哪些方面
早日上岸!
我们搞了一个免费的后端面试真题共享群,互通有无,一起刷题进步。
没准能让你能刷到自己意向公司的最新面试题呢。
感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:面试群。
本文首发在我的同名公众号:王中阳Go,未经授权禁止转载。