来源: wx群

时间: 未知

公司: 跟谁学

我获取时间: 2021-07-19

  1. 说一下Redis中HashMap的实现(双table,渐进式rehash,扩容条件,缩容条件,bgsave,CopyOnWrite机制)
  2. 扩容过程中有新的请求流程
  3. Redis其他的数据结构(SDS,RAW,INTSET,ZIPLIST,SKIPLIST,QUICKLIST)
  4. 跳表的实现?
  5. Redis的定时任务怎么实现的?
  6. 订单服务过期是怎么设计的(RabbitMQ死信队列)

来源: wx群

时间: 未知

公司: 探探

我获取时间: 2021-07-28

一面:

  1. 首先是自我介绍,看个人的逻辑表达能力和职业规划吧?然后,看我是非计算机专业毕业,写个快排或者堆排吧。(我写了快排)
  2. tcp和udp的区别,三次握手过程和四次握手过程;
  3. vim的三种模式,怎么切换?如何调到行首,如何调到文件头,如何跳到文件尾,如何删除指定的行,怎么复制特定的行,怎么复制当前的行,怎么跳转到下一个单词,回溯到上一个单词;
  4. nginx和php-fpm是如何配合进行工作的?搭过LNMP环境吗?给你一台4核8g内核的机器,怎么配置nginx进程和php-fpm?
  5. 讲一下IO多路复用的实现原理?epoll的IO多路复用使用了哪几个函数?
  6. Mysql的索引,mysql的索引中整数索引快还是字符串快,为什么?关于mysql的索引以及内部机制,建议多找些资料看看;现场根据需求写sql语句,考察sum函数,avg函数,count函数,group by;
  7. redis的持久化有哪些?aof怎么实现持久化的过程中保持内存中的数据和新的aof文件中的数据的一致性;
  8. 进程和线程有哪些不同?

二面

  1. 写一下redis怎么限制用户在十分钟内只能登陆一次?这里要考虑到同一个账号在不同的机器上同时登陆的问题,使用setnx命令;
  2. redis中的sds类型与c语言中的字符串有何不同,怎么做到类型安全的;进行了那些优化(空间预分配、惰性空间删除);空间预分配的策略具体怎么实现的?惰性删除怎么确定删除哪个键的多余空间,要是你来做这种策略,准备怎么实现(可以考虑redisObject对象的lruz字段的使用);
  3. Redis如何删除过期键的?怎么保存键的过期信息的(重点在于考察redisDB结构的成员中有哪些成员,成员对象之间的对象共享以及expire成员保存过期时间的方式);
  4. 还有什么要问我的吗?

三面:

  1. 自我介绍;
  2. 给出一个数组,数组中可能含有重复元素,然后选择出所有的和为特定值的组合,两个元素一组,每个下标的元素只能用一次。比如[1, 2, 4 ,6, 15, 14, 6, 10, 8, 8, 8],和为16,那么组合为(1,15),(2,14),(8,8),(6,10).
  3. 你是如何理解clean code的?(可以参考《代码大全》一书,重点在于第六章和第七章,这本书我看过),感觉这个他们还是挺关注的;
  4. tcp和udp有什么不同?(又被问到了)
  5. http有了解吗?说下http有哪些方法?https 1.1与http1.0的不同(没关注过不同,没回答上来)
  6. 你对自己职业规划是什么?
  7. 还有什么要问我的吗?

四面(CTO):

  1. 自我介绍;
  2. 为什么选择技术这条路,怎么规划的?
  3. 你给我看的那个题目,就是省、市、县的那个题目,重点在于考察逻辑抽象能力;

五面(CEO):

  1. 你认为你有什么优点?举个例子说明;
  2. 一个架构能力的问题
    • 探探的用户有一个亿,48小时的日活量为1000万,平均每个人划和被划的次数为10万次。向左划过和向右划过的不会再出现在以后的推荐名单中。那么如何在50ms中快速选择出10万个候选人推荐给用户? (重点在于考察将大数据化小,分区和分块思想,大数据的存储)

来源: wx公众号

时间: 未知

公司: redis合集

我获取时间: 2021-08-31

基础篇

  1. redis为什么快?(内存操作、单线程、优化过的数据结构、IO多路复用)
  2. redis有哪些优缺点
  3. redis是怎么实现原子性的
  4. redis为什么要用单线程,最新的redis 6.0用了多线程,是怎么实现的,你了解吗?

数据结构和常见问题篇

  1. redis底层数据结构有哪些?
  2. SDS你能简单说下吗?
  3. skiplist是如何实现的? 数据结构是怎么样的,查询的时间复杂度是多少
  4. redis的常见的数据结构你知道吗?各自的使用场景。
  5. zset底层是如何实现的? 什么时候用ziplist和skiplist
  6. redis的集群模式有哪些?你们用的是redis是哨兵集群模式,具体是怎么配置的,了解吗?
  7. 能说下redis主从握手的流程吗?
  8. 为什么要做redis分区?你知道有哪些redis分区实现方案?
  9. 为什么redis集群有16384个槽?
  10. Redis与Memcached的区别
  11. redis的分布式锁用过吗,怎么用的?
  12. redlock能简单说下吗?
  13. redis单实例的QPS是多少,有测过吗?最新的6.0 QPS多少知道吗?
  14. redis的大 key 多大算大?单个redis实例建议多大内存?
  15. redis的网卡如果被打爆了,怎么办?redis缓存和本地缓存是怎么配合使用的,数据的一致性是如何解决的?
  16. 写时复制了解吗,在redis哪里用到了?在计算机的哪些场景或者算法里有用到?
  17. redis支持事务吗?redis事务机制中Watch是做什么的?Redis事务支持隔离性和原子性吗
  18. 你们持久化方式用的哪种?AOF和RDB的异同。SAVE和BGSAVE有什么区别?AOF文件太大怎么解决?aof优势,rewrite了解么,是什么场景会有rewrite?
  19. redis的过期策略有哪些? 如果定期+惰性都没有删除过期的key怎么办?
  20. 批量删除数据你们用什么命令?
  21. 项目中你们的redis key是怎么设计的呢?

    场景设计和优化篇

  22. 如何使用redis做延时队列?
  23. redis 中消息队列的实现方案
  24. 如何保证MySQL 和redis 数据一致性
  25. 热Key问题怎么解决呢?
  26. 怎么查找bigkey呢?如何避免?怎么删除大key
  27. redis如何做内存优化?
  28. 什么是缓存击穿、缓存穿透、缓存雪崩?能分别说下各自的解决方案吗?缓存预热和降级处理过吗?


来源: 未知

时间: 未知

公司: 未知

我获取时间: 2021-10-26

1.1.1. Golang

  1. Go中make和new的区别。 (make是初始化内部结构比如 channel 切片 map等结构,new是初始化内置类型的内存空间,并初始化为该类型的零值,最后返回该内存空间的指针)
  2. Go的GMP调度模型你清楚吗?你能说说是如何调度实现的机制? (可以先从以前的gm模型聊,说说以前需要加锁等效率比较底下,性能有问题,然后发展到gmp,然后说 g是什么,m是什么,p是什么,然后各种调度模型,比如本地队列和公共队列, 系统阻塞和非系统阻塞,调度都会发生什么)
  3. Golang的垃圾回收在什么时候触发的,GC是个什么样的流程?(gc触发有三种情况 自己手动触发;内存比上次翻倍;两分钟自动触发; gc流程可以聊三色标记过程,包括发展过程,比如以前的三色标记,后面发展到混合写屏障,减少stw的情况)
  4. 协程,线程和进程的区别。(这里面的协程是go的协程,可以细分聊一下,总的概括来说,线程和进程需要的资源更多,销毁,调度都比协程占据更多的资源,go的协程是用户态,调度管理是go自己runtime调度的,上下文保存只需要几个寄存器,另外协程启动需要的栈空间更少等等)
  5. Channel的底层数据结构是怎样的,是同步还是异步?(说一下内部结构即可,比如内置的循环队列,还有等待读的队列,等待写的队列,如果没有缓冲的话,其实是不需要用队列的等等,同步异步看有没有缓冲)
  6. 切片和数组的区别,你知道字符串的底层数据结构是怎样的?(内部结构不一样,切片是 data,len,cap, 数组是 bound elem, 字面上来说,数组是定长,切片是不定长,切片使用起来更加灵活)
  7. Map的的实现,怎么实现Map的线性安全,你知道Sync.map这个包的使用吗?使用场景知道吗? (map内部是 数组+链表,拉链法解决哈希冲突,有溢出桶,如果细聊,比如怎么进行查找的,等等,sync.map简单来说就是 读写分离,说下内部结构比如 dirty,miss等)
  8. Gin框架的路由实现原理你清楚吗? (我就知道 基数树,没深看)
  9. Gin框架为什么会比其他框架性能高? (没深看)
  10. Go语言函数传参是值类型还是引用类型? (值类型)
  11. 你了解内存对齐的概念吗?关于Go语言中的内存对齐你能说说你写代码遇到过的情况。(就是各种类型大小,通过排序之后更加节约内存)
  12. Go语言的的切片是的如何扩容? (这块源码特别简单,就十几行, 如果期望容量是目前两倍,就直接用期望容量,如果这个不满足,就看期望容量是否大于1024,如果大于1024,那就扩容1.25,如果小于1024,就翻倍)
  13. 实现一个判断通道超时的方法?(基于select) (可以用 context超时机制)
  14. Sync.Waitgroup你清楚实现原理吗?(内部结构比较简单, 一个 nocopy和state 状态和信号量,内部简单来说 就是计数)

1.1.2. MySQL

  1. MySQL的索引类型?(看怎么分,比如 聚簇索引和非聚簇索引,主键索引,普通索引,联合索引等等,看从什么纬度来说)
  2. B+Tree的数据结构?(底层双向链表,N叉树,结构特点就是叶子节点存储的是"数据",而且是排序的,好处是树矮所以io次数少,查询效率比较平均等等)
  3. MySQL的事务隔离级别,实现原理你清楚吗? (四种隔离级别,然后说下mysql默认的rr级别,再说下 幻读和幻行,解决方案 mvcc+gap lock)
  4. MySQL的聚集索引和非聚集索引的区别? (非聚集索引叶子节点存的是主键的值,需要回表到主键索引上进行查询,聚集索引叶子节点存储的是整条数据的值)
  5. MySQL的联合索引最左匹配原则 (无非就是 a,b,c 然后 and 和 or ,然后 包括 大于 小于 这种)
  6. MySQL执行SQL语句的的流程? (客户端提交sql,然后到sql的server层里,连接器进行连接,先会去缓存里查询,缓存里没有 通过分析器 优化器,再到执行器,再去存储引擎查询结果,部分sql需要在server层里进行再次处理,最后返回)
  7. MySQL你用过HashTable的索引吗?说说他的区别,以及Hash碰撞的解决,还有他的时间复杂度。 (不会)
  8. bin-log和redo-log你清楚吗?回答的时候我顺带会提下我知道的两阶段提交这块。(一个是记录数据可能要发生改变进行记录,redolog是记录事务对数据页做了哪些修改)

1.1.3. 计算机网络

  1. HTTP协议的演进,各协议版本的区别。 (1.0不记得,1.1多了 长连接 keep-alive, 支持并行下载和断点续传, 2.0 支持多路复用,二进制帧,3.0不记得了)
  2. 三次握手四次挥手你怎么理解? (一个是连接,一个是断开连接,如果不够,可以说下握手和挥手的各个状态时)
  3. 为什么需要三次握手和四次挥手?(三次握手是为了保证能够正常的连接,另外,有个机制就是服务端回传的时候是 ack和syn一起的,所以节约了一次传递,最少三次,四次挥手也是一样,最少四次)
  4. TimeWait状态你的理解,以及你在平时中遇到的有关TimeWait的问题,有抓包分析过吗?MSL这块在应用层你这边怎么修改的(坑问题,后面才了解MSL基于系统内核设置,现在好像还很难在应用层修改) (这块我就只知道需要等待2msl,设置这块不熟)
  5. 基于UDP实现一个可靠传输机制(把TCP的可靠传输机制,流量控制,拥塞,重传,确认机制在UDP上套一下) (这个不会)
  6. OSPF协议你知道多少,建立的报文阶段类型,还有邻居状态,你有抓包看过吗? (这个不会)
  7. DDOS攻击你知道多少? (没了解过,大概就是不断请求连接服务,然后把服务连接数打满,带宽占满,影响服务正常使用)
  8. TCP的粘包? (缓冲区大小,发送的不够缓冲区大小,就粘包一起发送,解决粘包 比如 标识位,比如发送的时候包含传送的大小等等)
  9. Cookie和Session区别? (会话,本地和服务器,感觉这块没啥好说的)
  10. 你用过哪些交换机,还有对于私有协议和点对点的视频流这块协议你知道多少? (这个不会)
  11. 我现在和你视频面试,我们之间的数据流在TCP/IP上是如何封装传输。发送之间会不会有三次握手连接。(点对点视频直播多为UDP)(这个不会)

1.1.4. 应用问题

  1. 给你一个500G-1T的文件,里面都是IP字段,你需要对这个文件基于IP地址从小到大进行排序。(大文件的思路都是分而治之,比如先把文件拆分成多个文件,把所有的ip进行hash分到各个文件里,然后各个文件进行 堆排, 比如取前100,最后再把每个文件的前100再次排序即可)
  2. 现在你的web后端业务能受理1000QPS,随着业务增长,你如果解决瓶颈问题。(cdn,缓存,数据库分表,服务拆分等等)
  3. 你在学Go语言中你遇到过哪些问题,你是怎么解决的。()

来源: 我自己面试

时间: 未知

公司: 得到(逻辑思维)

我获取时间: 不告知

一面:
  1. 基本项目
  2. mysql的锁有哪些, 得知看了 丁老师的课,就不问了
二面:
  1. 基本都是项目
  2. mysql联合索引 a,b,c id是主键
    1. select * from table where a =? and b>? and c = ?
    2. select a,b from table where a = ?
    3. select id,a,b from table where a = ?
  3. redis跳表结构和时间复杂度
  4. redis压缩列表结构和时间复杂度
三面:
  1. CTO面,基本问 项目管理,完全不会
  2. cap
  3. cpu没有任务的时候是什么状态
  4. 项目管理..
HRBP面:
  1. 基本14~18, 我感觉14都没有
  2. 问为啥跳槽,工作内容,公司业务等等
  3. 没给具体薪资

来源: 我自己面试

时间: 未知

公司: 洪恩教育(挂着完美世界子公司名头)

我获取时间: 不告知

一面:
  1. 有没有做过项目设计
  2. 用过哪些go的项目框架
  3. gin路由匹配规则和原理
  4. grpc是什么
  5. http报文结构
  6. 常见的mysql索引,什么情况会导致有索引,但索引失效
  7. mysql的innodb索引结构
  8. 什么是联合索引
  9. mysql 数字类型和对应的大小
  10. mysql 字符串类型和大小和区别
  11. redis的set和zset区别
  12. redis的zset为啥不用平衡二叉树(平衡二叉树和跳表的区别)
  13. redis的持久化
二面:

基本聊项目,无技术问题

这家hr真的贼没有礼貌。。。 我对她们印象贼差


来源: 我自己面试

时间: 未知

公司: 云账户

我获取时间: 不告知

一面:

基本聊项目

  1. 联合索引 abc b=&c=
  2. 单表几千万 为啥 id>100 比 ID> 1000w 查询要快
  3. redis基础类型
  4. zset底层实现
  5. 跳表的结构
  6. 为啥用跳表,解决了什么问题

算法题:

  1. 括号匹配

sql题: 某天里购买金额最多的十个人


来源: 我自己面试

时间: 未知

公司: 知乎

我获取时间: 不告知

一面:
  1. 项目细聊
  2. go的内存分配
  3. redis的主从模式和集群模式区别
  4. 设计场景: 扫码登录
  5. 设计场景: 知乎热榜,热点数据在不同的表里,t+1展示前一天, 前50条
  6. 算法题: 二叉树镜像(反转)

来源: 我自己面试

时间: 未知

公司: 美餐

我获取时间: 不告知

一面:
  1. 聊收银台项目
  2. mysql innodb的索引结构
  3. 为啥用b+做索引结构,不用其他的二叉树
  4. 隔离级别
  5. 每种隔离级别会导致什么问题
  6. 幻读场景
  7. 消息队列重复的原因,怎么解决
  8. 如果消息可以重复,消费端怎么处理
  9. 分表

results matching ""

    No results matching ""