第1期go社招面试经验月报

面经哥专注互联网社招面试经验分享,关注我,每日推送精选面经,面试前,先找面经哥|面经哥整理了上月30篇面试经历,选取了较为热点高频的面试题供大家参考

基础知识类

1、Redis平时用得多吗?常用哪些数据结构

2、用Redis实现一个简易的延迟队列,该怎么做?(例如有个下单场景,3分钟都还没支付,就要把库存数据回滚,借助这个延迟队列该怎么实现?)
3、用Redis实现一个简单的分布式锁该怎么做?
4、Redis如果有大key,删除的时候会有什么问题
5、了解Redis的持久化吗?AOF重写机制
6、Redis如何保证多条既有写又有读命令的数据一致性呢?例如,对一个key既执行写操作,又立即执行读命令,如何保证这个数据一致性的?假设又有读,又有删除的命令,是怎么保证不会发生数据异常的?
7、golang里头的map,如果不初始化就赋值,会有什么问题?
8、map是线程安全的吗?为什么?
9、如果我去map中删除了某个key,它的内存会释放吗?假如说这个key对应的value是个指针类型/引用类型的,它会释放内存吗
10、defer的执行顺序是怎么样,有什么注意事项?defer在什么情况下会修改函数返回值?
11、如果现在初始化了一个切片,有多个协程并发地去往这个切片里头读写数据,会发生panic吗
12、使用go,上下文连接是怎么实现的
13、Map的并发检测是怎么做的
14、介绍一下go channel的使用方式有几种?使用channel实现一个生产者,消费者的模型,怎么去实现?先入先出还是先入后出?
15、初始化和不初始化使用slice的区别,哪种情况可以不初始化直接用?
16、了解过slice 的扩容机制吗?slice的数据结构中有哪几个元素?
17、介绍一下GMP模型?假如有一个M挂掉了,或者发生io 阻塞,这时候会发生什么?
18、Channel一般会在什么场景下使用?往一个未初始化的channel发送数据,会怎样?
19、关于go里头的随机数是线程安全的吗?随机数的那个种子的设置有什么注意的地方?需不需设置
20、go里头的对象池了解吗?
21、长连接(TCP/Websocket)编程接触过吗?
22、map为什么遍历是不保证有序的?有了解它底层的BMap和bucket的一些机制吗?
23、go的内存泄漏遇到过吗,大概会有哪些场景容易发生,怎么去避免?go的GC会自动关闭channel吗?
24、map 是线程安全的吗?为什么?sync.map内部是如何实现并发安全的?你自己是怎么实现一个并发安全的map呢?分桶的目的是什么?
25、讲讲channel是如何实现的,那么channel一般的应用场景有哪些,Channel里头如果缓冲区满了,就会阻塞当前的写协程,这个阻塞底层是怎么实现的
26、channel优雅关闭方面,有什么好的实践? 简化一下场景,假如现在生产者会往channel中发数据,消费者从中取到数据后会插DB,那么我在什么情况下才可以关闭这个channel呢?那么正常来说,close channel是在生产者发送完成就关闭,还是等所有消费者都取到数据并处理完逻辑,哪个更好? 那么这里还有个问题,如果生产者不是在发送完所有数据就关闭channel,那消费者组要怎么知道数据已经都读完了呢?
27、数组和切片的区别
28、说一下select的底层实现
29、说一下slice的底层原理(数据结构,扩容机制)
30、简单描述一下MySQL主从复制的过程?遇到过主从延迟吗,如何解决?
31、MySQL在实际中遇到什么性能优化的问题
32、MySQL索引有哪些类型?索引的实现原理?B+树的非叶子节点和叶子节点的区别?回表了解吗?有什么办法能不回表?
33、有了解过三阶段提交吗?两阶段(2PC)有什么弊端?有没有听说过那个叫Paxos算法?围绕补偿事务这个机制,你能简单讲一下TCC吗?
34、MySQL用的多吗,有没有遇到什么实际问题,比如主持延迟、深度分页等?
35、慢查询你是如何优化的,针对这种情形,分几方面说说你的解决思路,例如SQL语句、表结构设计的优化?
36、MySQL的分表和分区有什么区别?什么情况采用分表,什么情况采用分区?两者可不可以结合起来使用呢,例如我先做分表,再去做分区? 在分区的情况下,我能不能在select语句里头指定查询条件,只查某个分区,去加快查询速度?
37、对MySQL的log了解多少?redolog和undolog的作用分别是什么?binlog了解吗?
38、假设现在一张表里头,有id主键,有一个(a,b)的联合索引,你能不能说说这张表的底层数据结构是怎样的? Where a = ? / a in (…),这个SQL查询语句,在底层的查询过程是怎样的,树的遍历是个什么顺序?
39、Offset 1000000 limit 10; 这种深度分页场景,底层的扫描过程是怎样的,有什么优化思路?
40、B+树如果有3层,大概支持的数据量是多少?查询会走几次IO?
41、假设说现在有一张大表,几千万的存量数据,在线添加索引或加字段的情况下 ,会出现什么情况,会锁数据还是锁表吗?(上行锁还是表锁?) 对写操作会阻塞,那读操作呢?假设现在主从同步已经完毕的情况下 那换个问法,假设现在有一张存量数据5000w的表,你要往里头去加一列字段,再加一个索引,应该怎么去操作呢?
42、golang中的context一般会用来做什么?假如有一个异常程序,一直往这个valueContext中添加不同的数据,会有什么问题吗?当它运行一段时间以后,服务器内存会涨吗?那如果现在设置了很多value,我现在通过Context去取这些值的时候,效率上会有什么问题吗?
43、Linux 怎么查看端口调用
44、有了解过sync.RWMutex的底层原理吗
45、解释一下MySQL的MVCC

综合类‍‍‍

1、讲讲项目里头有什么自己觉得有亮点或有成就感的地方

2、介绍项目,希望你能从以下方面展开阐述:当时的背景、你在该项目中的角色和定位、技术选型、碰到的技术难题、成果及项目产出、个人得到哪些成长


场景类

1、有用过消息队列吗?基于MySQL和Redis,让你实现一个延时队列,在不考虑性能的情况下,你会怎么设计?那kafka为什么性能比较高,主要是那几方面的原理保证?

2、假设SQL语句为 select id from *** where ***, 如果order by了某个字段,会回表吗

3、设计题:微信PC端登录,用户拿手机端的微信扫二维码,一点授权登录,然后电脑端就自动登录成功了,如果让你来做这么个需求,你会怎么设计呢,主要讲讲接口设计,数据存储,交互过程等等(感觉当时卡了有近2分钟才答出PC端实现的关键点)

4、假设用户A请求先打到了A机器,A节点上的local cache查无数据,那么会查DB,更新该缓存;然后接下来用户A改了这个值,但这次请求达到了B机器,更新了DB,并将最新值塞到B机器上的缓存,但是第三次请求又打到了A机器,这时候命中了A机器缓存的那个旧版本的数据;有没有想过怎么解决这类问题?

5、你觉得做开放平台,最重要的是什么设计?

6、MySQL有一张表,有几十万的数据量,但是感觉查询速度不是很快,这个时候你会怎么处理呢?

如果这张表涉及的业务特别多,有上千个select查询语句,你是要每个语句都查执行计划吗?比如我有上亿的数据量,这张表该怎么处理?

7、有一个IOT的项目是这样的,有几十万台设备,但要求保持长连接实时去关注这些设备的状态,如果这时候有100w个长连接,这个时候,服务端的架构应该怎么设计?

那如果是要求负载均衡,该怎么设计?

8、假设现在A的长连接,连的是一号网关,然后B的长连接,连的是二号网关,A向B发消息的时候,程序应该怎么去实现呢?

9、用golang实现一个环形队列?你觉得这里头有哪些关键点,值得注意的地方?

如果收到一个请求,里头有100个子任务,用go编码时直接创建100个协程并发处理,是否合适呢,会导致什么问题?

10、用户金币数实时排行榜,如果让你在内存中实现,你将如何设计数据结构?

11、如果现在有个应用运行了一段时间以后,发现内存一直在涨,你会怎么去定位?用什么工具或看什么指标?


算法类‍‍‍

1、代码题,实现一个本地的cache ,达到线程安全

958b4b7b3da068d0bcd5c648a734310e.jpeg假设说,现在这个缓存的key很多,有几千万个,这个snapShot如果按你刚才的思路(深拷贝),就会阻塞时间很长,有什么办法优化?

2、代码题(思维,逻辑,边界条件)

cd1d81148a94811e7e81285309bec1d3.jpeg

3、代码题

64bb575521cb3fcb743c113683214546.jpeg

4、代码题,最长公共子串

5、写个小代码假如说现在有1w个字符串,让你来拼接,你会怎么实现?


蓝宝书 涵盖了各个大厂内部的面试流程、薪资、福利、应聘者的硬条件和软条件,建议每个渴望去大厂的都人手一份关键是限时免费👇🏻

cf2120ce8edb5925c913efc9dd82019b.jpeg

bbd896cf256dd442a1acadf83362c0f2.jpeg

359a15327a9ac31c996e73a63db64a71.jpeg

1ca78cb6a3d278a55693ecc1e974a529.jpeg

959ddfda2ca4df6e02f4c7d138d5c95b.jpeg

发送蓝宝书领取👇🏻

  • 881285e4c67db4d99301b8b8e94601a5.jpeg


最近更新

  1. TCP协议是安全的吗?

    2024-06-12 14:10:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 14:10:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 14:10:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 14:10:01       18 阅读

热门阅读

  1. 原生js实现缩略图

    2024-06-12 14:10:01       4 阅读
  2. perf kvm to profile vm_exit

    2024-06-12 14:10:01       12 阅读
  3. unordered_set,unordered_map模拟实现

    2024-06-12 14:10:01       7 阅读
  4. Web前端入门必学:解锁数字世界的魔法钥匙

    2024-06-12 14:10:01       6 阅读
  5. PHP 文件上传:全面指南与最佳实践

    2024-06-12 14:10:01       8 阅读
  6. linux top 中显示swap用量并排序

    2024-06-12 14:10:01       8 阅读
  7. Redis 数据持久化策略和数据过期策略

    2024-06-12 14:10:01       6 阅读
  8. flutter EventBus

    2024-06-12 14:10:01       5 阅读
  9. 什么是前端工程化?

    2024-06-12 14:10:01       6 阅读
  10. table根据字段合并单元格

    2024-06-12 14:10:01       6 阅读
  11. vue问题记录

    2024-06-12 14:10:01       6 阅读
  12. c++多态

    c++多态

    2024-06-12 14:10:01      8 阅读
  13. 数学学习与研究//知网//简介//投稿途径?

    2024-06-12 14:10:01       6 阅读