面试摘要【持续更新】

项目:

1、项目中熔断和限流怎么做的,熔断、降级、限流【方法:令牌桶、漏桶、滑动窗口】

1)、限流有哪几种方式?我扯了阿里sentinel的令牌桶、漏斗、冷启动、自适应限流(bbr、cpu load),为什么bbr公式能做到自适应限流?当时没想明白这个问题问什么,然后面试官说了可以根据结果来做调整。

参考资料: https://segmentfault.com/a/1190000023552181 

Sentinel 和常见限流算法 - 掘金

从kratos分析BBR限流源码实现_牛客博客 bbr

Kratos 源码分析:限流器 Limiter - 熊喵君的博客 | PANDAYCHEN

服务容错: 服务容错模式 - 美团技术团队

单机器多线程限流

2、设计模式

3、序列化工具

参考资料 :ProtoBuf : Protobuf 终极教程

高效的数据压缩编码方式 Protobuf

protobuf为什么那么快 - 简书

4、百万微服务如何定位出现的微服务

5、分布式 ID九种实现

9种 分布式ID生成方案,让你一次学个够 - Java进阶课 - SegmentFault 思否

6、注册中心是怎么实现的,是单独的组件还是集成于rpc框架里面。注册中心是单机的还是分布式的,分布式的注册中心是怎么实现的。注册中心是单机的还是分布式的,分布式的注册中心是怎么实现的

24丨注册中心:分布式系统如何寻址? | JAVA 架构师笔记

我们做出了一个分布式注册中心 · SOFAStack

7、假设注册中心失效,即便是用了etcd这种高可用的系统,注册中心也是有故障率的,那怎么让注册中心实现即使在宕机期间也能正常服务

8、知道脑裂吗?如何解决?【raft】

【1】raft强一致,什么叫强一致;向客户端保证了什么问题

强一致性、弱一致性、顺序一致性、最终一致性概述_关系数据库强一致性_爱吃甜食_的博客-CSDN博客

【2】从leader读比较强,从follower读的时候怎么办

raft 读请求可以读follower吗 - SegmentFault 思否

【3】leader失效了解过吗,怎么保证你读的时候leader还是真正的leader,任期

Raft中 几种特殊情况分析(持续更新)(1-26日勘误) - 知乎

https://www.cnblogs.com/wyq178/p/13899534.html

Raft论文翻译 | Fade Temple

9、负载均衡算法

负载均衡的6种算法,Ngnix的5种算法! - 知乎

10、CAS的ABA问题是什么,要怎么解决

11、线程的同步机制

线程同步机制笔记 - Kaiyuan's Blog | May the force be with me

12、设计一个排行榜的数据结构,说思路

13、分布式事务怎么实现?当时只说了扫表(怎么减轻扫表压力)+rocketmq事务消息实现原理+seata at实现原理。其实还可以扯下tcc、xa,不过感觉面试官已经知道这题问不倒我了,就没继续说下去。

14、用户访问A服务,A服务需要调用B服务,但是B服务的处理耗时在不断上涨,问A服务的关键指标(cpu、io、mem等)会怎么变化

听到问题后,我直接原地爆炸,头皮发麻,只能用dubbo的思维去硬扯,其实没太分析出来,可能分析出来5 6成吧,尴尬。 面试官继续问:你都是分析同步调用,那异步调用呢? 更爆炸了,当时陷入了java rpc线程的思路死循环中,异步调用不是一样吗? 除非说A服务需要同时调用B C服务,可以用异步同时调用B C服务再get来达到并发调用的效果,但是指标应该是一样的? 然后我扯了一句,太细了,打了句哈哈,我们线上遇到这样的问题都是直接扩容解决的。面试官反问为什么扩容能解决,然后我说了句处理固定数量qps的请求,如果多个应用一起扛的话,每个应用能够均摊,如果B服务也能顶住的话,其实可以不被B服务影响吞吐量。 其实后面细想,面试官真的是在问这个吗?协程协程,抓住协程跟线程的区别,这题就迎刃而解了,为什么协程高效?因为完全异步调用时协程能够接受在调用处停顿啊,线程做不到。其实问题是承上启下的,当时没get到他的点,太可惜了

Callback 与 Coroutine 协程概念说明 | Tao's blog

15、手写生产者消费者模型

参考资料:https://www.cnblogs.com/-wenli/p/12336965.html

16、bitmap, 优点,缺点,和 hashmap 比较

Redis-Bitmap - 个人文章 - SegmentFault 思否

Redis面试题Redis bitmap-嗨客网

Bitmap原理和实现及其在Redis的应用 | 码农家园

17、布隆过滤器

5 分钟搞懂布隆过滤器,亿级数据过滤算法你值得拥有! - 掘金

18、分布式缓存:如果客户端想保存热点数据,如何设计

如何保证redis中存放的都是热点数据_代码搬运工.的博客-CSDN博客

19、热点数据如何从存储节点同步到客户端?是推送还是拉取

20、在线写一个LRU,如何加锁

阿里面试官让我实现一个线程安全并且可以设置过期时间的LRU缓存,我蒙了!

22、项目,jwt 是什么

五分钟带你了解啥是JWT - 知乎

JSON Web Token 入门教程 - 阮一峰的网络日志

23、对象一定分配在堆上么,JIT,分层编译,逃逸分析

24、限流怎么做,如果让你设计一个限流系统,怎么实现

25、Linux 中,awk、find、grep -v、grep -c

26、说一下GC吧,什么时候进行Full GC呢?你了解哪些收集器?CMS和G1。详细谈谈G1的优点

27、乐观锁,悲观锁,以及应用场景?

28、说说dns?除了查ip还可以查什么?都有哪些类型的记录

DNS 协议是什么?完整查询过程?为什么选择使用 UDP 协议发起 DNS 查询? · Issue #108 · sisterAn/blog · GitHub

https://m.dns.com/article/detail/710/3.html

DNS和CDN的区别与联系_帮助中心- DNS.COM,域名DNS解析服务商

29、浏览器地址栏输入网址到看到页面的过程中都发生了什么

从输入 URL 到页面展示到底发生了什么?看完吊打面试官! - 知乎

30、项目难点?如何保证可扩展性?【缓存、限流等等】

如何设计一个可扩展性高的系统? - 掘金

你们系统怎么保证可扩展的 - 知乎

31、代码上线后发现CPU使用率过高,怎么排查

线上服务器CPU占用率高如何排查定位_mango_54的博客-CSDN博客

记一次Go程序CPU占用100%的问题_gozero cpu越来越高_Kylin_Mountain的博客-CSDN博客

Golang使用pprof分析cpu占用过高问题_pprof 分析cpu使用过高_Go和分布式IM的博客-CSDN博客

32、打开一个文本文件,修改里面的内容,这整个过程中操作系统干了什么

计算机文件读写原理_计算机 读写工作原理_shrun的博客-CSDN博客

文件读写底层原理 - 简书

33、迁移数据怎么保证数据一致性

34、一个业务流程,链路比较长,且涉及多个服务之间的通信,如果出问题怎么排查

35、代码中遇到进程阻塞,进程僵死,内存泄漏等情况怎么排查。通过ps查询状态,分析dump文件等方式排查

Linux ps 命令 | 菜鸟教程

linux 查看进程阻塞,Linux下socket编程 多线程 进程超时阻塞、卡死问题定位_爱的巴掌的博客-CSDN博客

linux系统排查线程阻塞问题_linux 如何查一个thread 阻塞在哪个位置_锤%锤的博客-CSDN博客

36、Linux了解么,查看进程状态ps,查看cpu状态 top。查看占用端口的进程号netstat grep

37、回到网络,刚才你说到直播场景,知道直播的架构怎么设计么,要点是什么,说了几个不太对,他说要避免广播风暴,答不会

38、线上问题怎么排查?Full GC频繁怎么办

39、动态代理和静态代理区别,如何实现动态代理

Nginx正向代理和反向代理配置 - Martin的专栏 - SegmentFault 思否

Nginx 正向代理与反向代理解析与实战 - 掘金

nginx--❤️图解及代码实现正向代理、反向代理及负载均衡(非常实用,建议收藏❤️)-云社区-华为云

nginx中resolver参数配置解释 |

40、utf-8 编码中的中文占几个字节;int 型几个字节

41、并发度提100倍有哪些优化的点

42、网关层还了解什么技术

43、锁怎么做的?分布式锁怎么做的?放过去的请求失败或者延迟大量请求阻塞在那里怎么办

44、日志记录模块讲一下?日志统一记录?可用性怎么保证的?报警怎么实现的?报警的指标只是健康检查?服务之间的相互调用有涉及到吗?分布式链路追踪如果某个服务调用出问题了,怎么排查问题

45、让你写一下堆栈溢出你怎么写?为什么往集合设置那么多元素没有被GC?

46、容器与云原生区别

云原生应用之路 —— 从 Kubernetes 到云原生 · Kubernetes 中文指南——云原生应用架构实战手册

47、短链接系统的设计,以及运行的流程

48、线程、协程、php-fpm的线程所占的内存

MySQL:

1、MySQL两阶段锁

参考资料:tcp - 详解MySQL两阶段加锁协议 - 码农架构 - SegmentFault 思否

浅析MySQL二段锁 - 空中漫步 - SegmentFault 思否

Innodb中的事务隔离级别和锁的关系 - 美团技术团队

2、MySQL的order by 和group by优化【FileSort排序算法:双路排序算法、单路排序算法】

参考资料:MySQL高级 之 order by、group by 优化_走慢一点点的博客-CSDN博客

3、MVCC的 实现或者是事务的隔离级别

事务隔离级别有哪些_事务隔离级别有哪几种_事务隔离级别的主要内容_华为云学院_华为云

参考资料 :chenjiayang.me

MySQL事务隔离级别和实现原理(看这一篇文章就够了!) - 知乎

https://www.cnblogs.com/kismetv/p/10331633.html

『浅入深出』MySQL 中事务的实现 - 面向信仰编程

4、redo log、undo log、binlog

【1】innodb的redo log 如何保证crash-save

【2】bin log 和 redo log的写入顺序

【3】redolog 写满之后 新来的日志怎么写入

参考资料 : 必须了解的mysql三大日志-binlog、redo log和undo log - 个人文章 - SegmentFault 思否

https://www.cnblogs.com/rickiyang/p/13841811.html

MySQL日志模块 - 知乎

5、两阶段提交

参考资料:【2021-07-16】为什么 redo log 需要两阶段提交? | daily-a |《每日一题》| Java 技术论坛

MySQL 2PC & Group Commit - 个人文章 - SegmentFault 思否

MySql事务之两阶段提交与redo log、binlog - 简书

6、Mysql分库分表

参考资料:https://segmentfault.com/a/1190000021755246 

java - 百亿级数据分表后怎么分页查询? - 艾小仙 - SegmentFault 思否

7、MySQL倒排索引的概念,如何调优

参考资料 :MySQL(InnoDB剖析):---全文检索(倒排索引、全文索引/全文检索)_全文索引和倒排索引_你走吧起风了__的博客-程序员信息网 - 程序员信息网

8、Mongodb与 MySQL的区别

9、redolo工作原理,宕机恢复

10、undolog在宕机时怎么保护原子性

11、sql语句的执行过程

https://www.cnblogs.com/mengxinJ/p/14045520.html

MySQL探秘(二):SQL语句执行过程详解 - 掘金

12、MySQL的主键用uuid的坏处

Mysql主键UUID和自增主键的优劣分析 - 编程宝库

自增主键【自增锁】MySQL自增锁引起的插入性能问题_mysql自增列对插入性能的影响_一次编写 到处调试的博客-CSDN博客

13、一个业务场景,经常会访问where a = xx and b = x 以及 where b = xx and c = xx,基于这个业务场景,但是只能建立一个索引,怎么建立。【 (b,a,c) 的联合索引、索引下推】

14、5个服务器,每个服务器5个MySQL进程,有一个进程可写,其它都24个进程只能读,如何实现数据同步

【在上面的基础上,在启动一个机器,开个MySQL服务,需要同步原来机器上所有的数据,如何实现】

15、MySQL为什么索引不适用哈系表

16、大表怎么优化

参考资料:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网

17、数据库步长原理

18、订单分表场景怎么按用户关联多个分表查

19、Mysql有哪些引擎有哪些区别

20、MongdbTemptle save和insert的区别

21、数据库 abc ab% %bc “” null 哪些可以用索引

参考资料:https://www.cnblogs.com/niuben/p/11197945.html

mysql like索引_MySQL索引,查询中like '%abc%' 能用索引吗?_weixin_39616379的博客-CSDN博客

22、慢查询分析

索引失效

什么是MYSQL死锁?如何避免死锁? - 梯子个人技术教程

23、Mybatis分页 拦截器

24、为什么一页是16k

深入理解Mysql索引底层数据结构与算法 - 极术社区 - 连接开发者与智能计算生态

Mysql中innodb引擎表页大小16KB超出大小怎么办?_star_xing123的博客-CSDN博客

25、分布式事务、.Xa协议原理

26、mongodb和elasticsearch各自特点

27、写sql,深翻页优化,我写了inner join、where index>?两种方式。where index>?方式有什么缺点?inner join为什么快

java - MySQL深度分页的问题及优化方案:千万级数据量如何快速分页 - 敲开互联网四大之门 - SegmentFault 思否

28、如果硬盘的随机访问性能大幅提升,mysql 的存储结构能否优化,其他的存储结构?哈希表怎么存,用哈希的方式,增删改查相比B+树有什么区别

29、sql 执行慢,是什么原因,怎么解决

30、mysql多事务执行会产生哪些问题,怎么解决这些问题

31、库分表做过么,怎么做到不停机扩容,双写数据丢失怎么办,跨库事务怎么解决

大众点评订单系统分库分表实践 - 美团技术团队

MySQL分库分表,写得太好了!-mysql分库分表

不停机扩容

MySQL 水平sharding 扩容如何做到不停机平滑扩容? - 知乎

Mysql数据库平滑扩容解决高并发和大数据量问题_赵广陆的技术博客_51CTO博客

双写数据丢

故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题-腾讯云开发者社区-腾讯云

32、mysql主从复制,主从延时怎么解决

MySQL 主从同步延迟的原因及解决办法_51CTO博客_mysql主从同步延迟怎么解决

33、怎么保证redis和mysql的一致性,redis网络原因执行超时了会执行成功么,那不成功怎么保证数据一致性

美团二面:Redis与MySQL双写一致性如何保证? - 掘金

34、线上有遇到大流量的情况么,产生了什么问题,为什么数据库2000qps就撑不住了,有想过原因么,你们当时怎么处理的

35、mysql半同步了解过吗

https://www.cnblogs.com/ivictor/p/5735580.html

PolarDB 数据库内核月报

MySQL复制技术及半同步实践 - 墨天轮

36、select * from table t where size > 10 group by size order by size的sql语句执行顺序?

Sql查询原理与Select执行顺序(详细)-阿里云开发者社区

37、数据库中是否会出现死锁?数据库中的死锁避免是否可用刚才说的方法来避免?

38、如果进程一次锁住数据库中的多条记录来避免死锁,会带来什么问题?你觉得应该怎样解决这个问题?在这我回答了乐观锁,然后回答了乐观锁的实现原理

39、如果数据库中的确发生了死锁,应该怎么解决?我先回答简单的方法就是kill掉死锁中的 进程,破除循环等待。然后问了在死锁发生和kill掉进程过程中,会不会有其他操作。我绞 尽脑汁想了一个以前在论文里看到的,仅供大家参考,我回答在kill掉进程前,先检查锁住 相关资源的进程,如果有进程可以完成,那优先为这些进程分配资源,使其尽快完成后释放出资源

什么是MYSQL死锁?如何避免死锁? - 梯子个人技术教程

40、MySQL 平滑水平扩容方案

41、innodb的事务。主要涉及到mvcc以及视图回滚等,各个隔离级别下的问题以及如何解决?比如mysql默认是可重复读级别,但是会有幻读问题,你得从原理上了解为什么会出现幻读、那如何解决呢,我们可以通过间隙锁来解决,那间隙锁的原理是什么?间隙锁有什么问题。回答的时候最好把这些问题都涉及到,引导面试官

间隙所原理

把MySQL中的各种锁及其原理都画出来 - 知乎

插入意向锁

https://juejin.cn/post/7178321966024097829

42、联合查询和子查询的优缺点

43、explain extra中use index、use where、use condition 区别

44、MySQL索引过大会有什么危害

45、MySQL 乐观锁和悲观锁的实现

46、mysql 目前有 7 条数据,delete 了两条,此时掉电重启,再插入新数据,自增 id 是几

https://www.cnblogs.com/lyh233/p/16329935.html

47. 表连接查询和子查询的优缺点

多表连接和子查询的优缺点-掘金

48、MySQL in 或者 or 走索引吗

MySQL中, in和or 会走索引吗_mysql or走索引吗_dreamer'~的博客-CSDN博客

49、表连接不走索引的原因

MySQL表连接为何不走索引 - 掘金

Mysql多表关联不走索引的原因及分析_Mysql_脚本之家

50、索引锁片化

记一次索引碎片引起的性能问题_sqlserver索引碎片危害_zhangzeyuaaa的博客-CSDN博客

Technology技术分享

51、普通索引和唯一索引改变数据之间的区别

Mysql - 普通索引与唯一索引之间性能差别change buffer_唯一索引和普通索引性能一样吗_it_lihongmin的博客-CSDN博客

52、联合索引的B+数据结构

联合索引在B+树上的存储结构及数据查找方式_联合索引b+树_问北的博客-CSDN博客

mysql联合索引的B+树到底张什么样子啊? - 知乎

53、为什么MySQL不推荐使用join

为什么 MySQL 不推荐使用 join? - 掘金

联表细节:MySQL JOIN 的执行过程 - 知乎

数据库中的四大join & 笛卡尔乘积(以MySQL为例)_数据库笛卡尔积运算实例_晓之木初的博客-CSDN博客

Redis:

1、redis的cluster的架构原理【一致性hash,怎么样去找到最合适的虚拟节点进行一致性哈希,这样有什么优点】【怎么去做负载均衡】

参考资料 : 深入学习Redis之Redis Cluster - Java菜鸟程序员 - SegmentFault 思否

【Redis技术探索】帮你完全搞定Cluster(集群)架构原理_51CTO博客_redis cluster集群

https://www.cnblogs.com/crazymakercircle/p/14282108.html#autoid-h3-26-1-2

场景:一个场景,比如现在所有的key都是热点key,你的一致性哈希上的分布式节点有一部分挂了,你现在想要扩容去弥补这个节点数量,你怎么保证这个一致性问题

2、redis的6个数据结构的实现【跳表重点】

3、redis的aof和rdb的持久化

4、redis的网络处理机制【IO多路复用】

5、redis的 哨兵Sentinel

参考资料:Redis Sentinel-深入浅出原理和实战

6、redisc的codis架构

参考资料:浅析MySQL二段锁 - 空中漫步 - SegmentFault 思否

7、缓存穿透和缓存雪崩

8、redis分布式锁 的 实现

面试官:你真的了解Redis分布式锁吗? - 技术进阶之路 - SegmentFault 思否

分布式锁的实现之 redis 篇 | 小米信息部技术团队

基于Redis的分布式锁实现 - 掘金

RedLock: Redlock:Redis分布式锁最牛逼的实现

Redis分布式锁之红锁(RedLock) | SakuraTears的博客

9、Redis服务降级

10、Redis分布式锁 除了删除版本的lua还有吗【redisson】

Redisson 实现分布式锁原理 - 架构文摘 - SegmentFault 思否

工作三年,小胖居然问我 Redisson 原理?真的过份! - 墨天轮

https://www.cnblogs.com/qdhxhz/p/11046905.html

11、Redis 1000w个key 按照 xxx__前缀取1w的命令

redis根据前缀批量查找key_redis根据前缀查询_排骨瘦肉丁的博客-CSDN博客

redis从海量的key里面查询出某一固定前缀的key - 掘金

12、一台redis挂了拿不到key了怎么办

13、跳表能换成红黑树

14、一致性hash,虚拟节点作用,为什么一致性hash是一个环。

15、你们用的redis集群么,扩容的过程,各个节点间怎么通信的

16、redis持久化过程,aof持久化会出现阻塞么,一般什么情况下使用rdb,aof

17、redis长度过长怎么优化?哪个api,数据量超过多少效率会变低

Redis 大key(bigkey)问题的排查与解决方案 | Laravel China 社区

18、redis解决客户端session共享信息怎么解决的

19、ttl 为0

番外:https://segmentfault.com/a/1190000022172968

踩坑记之redis ttl=0 - 简书

20、redis 跳表

深入理解Redis跳跃表的基本实现和特性 - 掘金

21、redis大key为什么慢、如果删除需要注意什么

Redis千万级大key集合,怎么删除? - 掘金

如何解决Redis大key问题,看这一篇就够了!

22、为啥redis使用跳表,而不使用B+树

23、使用setnx时,且setnx删除失败了,如何保证数据的强一致性

24、缓存击穿、穿透、雪崩

10分钟带你了解缓存击穿、穿透、雪崩到底是什么?

25、redis过期策略

Redis过期key是怎么清理的? - 掘金

Leveldb:

参考资料 :https://leveldb-handbook.readthedocs.io/zh/latest/bloomfilter.html

InfluxDB:

GO:

1、Go的内存分配

2、Go的垃圾回收算法

3、Go的Channel的实现

4、抢占式调度

参考资料:https://www.cnblogs.com/luozhiyun/p/14589730.html 

5、内存泄露的 原因,如何定位

Golang内存泄漏的7种场景 - 知乎

一些可能的内存泄漏场景 -Go语言101

6、方法参数入栈的 顺序

7、如果每个goroutine中都获取返回值 ,有些方案(channel,全局参数、闭包)

8、go中for遍历多次执行goroutine会存在什么问题,怎么改进

9、char *Ptr=0; *Ptr='a' 说明一下内存分配流程

10、new和make的区别

参考资料:Go语言中new和make的区别 | 飞雪无情的博客

golang new和make的区别 - golang开发笔记 - SegmentFault 思否

11、2个协程交替打印字母和数字

12、Go依赖管理

【1】Go依赖管理历史有几次方式

【2】Go mod主要解决了什么问题

【3】Gosum里面是什么内容

13、介绍一下Go的context

14、数组和切片有什么区别

15、sync.map与map的区别

https://www.cnblogs.com/ling11/p/16318554.html

16、内存逃逸

17、Channel 底层如何实现阻塞的

18、饥饿模式下如何保证队列里的协程一定拿得到锁,或者说协程是根据什么判断进入这个队列的

19、stack里面保存什么 【method栈帧,pc,局部变量】

【1】局部变量是什么?应该不会保存在stack里面吧

【2】协程怎么停顿:抛异常造成suspend,保存现场

【3】协程为什么高效:避免内核中线程的上下文切换、协程数据更轻量。还有吗?等了一会我没思路,然后面试官自己说了其实还有一个,线程是可以随时发生上下文切换的,而协程是需要在固定位置显式切换的,所以保存上下文更轻量

20、runtime

21、go 语言的 panic 如何恢复

22、go 中 new 和 make 的区别

golang new和make的区别 - golang开发笔记 - SegmentFault 思否

23、可重入锁【go支持可重入锁吗 ;不支持】

https://segmentfault.com/a/1190000041121156

24、Golang defer的原理

25、context 的重写,以及作用

深度解密Go语言之context - 知乎

Go Context的踩坑经历 - 知乎

26、golang 控制反转、依赖注入

Go编程模式:委托和反转控制 | 酷 壳 - CoolShell

https://sgfoot.com/gof-ioc-code.html

go 依赖注入与控制反转 - 简书

27、go协成池

https://www.cnblogs.com/wongbingming/p/13091091.html

后端 - 100 行写一个 go 的协程池 (任务池) - 个人文章 - SegmentFault 思否

【我想自己做一个】Go协程池 - 人生开篇指南

深入浅出Golang的协程池设计 - Go语言中文网 - Golang中文社区

golang_Pool: go实现协程池 - CodeAntenna

28、time的原理

29、如何掉一个http的服务

30、Map怎么实现读写锁

31、Go 请求超时原因

https://www.cnblogs.com/mushroom/p/11756631.html

32、Go引用和指针的区别

33、深拷贝、浅拷贝

34、go空结构体

https://go.cyub.vip/type/empty_struct.html

35、new和make的区别,new能声明引用类型吗,new声明引用类型,new是在堆上分配内存还是栈上分配,那什么时候可以堆上分配内存

https://www.cnblogs.com/itbsl/p/10476674.html

36、内存逃逸讲讲

一文搞懂golang内存逃逸分析 - 掘金

内存逃逸常见问题合集 | Go 技术论坛

为什么栈比堆快

内存逃逸常见问题合集 | Go 技术论坛

37、channel怎么实现的,以及什么时候加的锁,加锁的顺序,什么时候会死锁

go通道channel 死锁的场景和原因浅析 - 掘金

38、MPG【没有细问】

39、垃圾回收【什么时候触发垃圾回收,怎么触发的】为啥不喷垃圾回收实现三色标记法

40、pprof 的原理【对进程内的函数调用栈采样,基于大数定律看哪些函数耗时长】

golang pprof 的原理分析_golang pprof原理_phantom_111的博客-CSDN博客

41、如何保证线上的稳定性

https://www.cnblogs.com/imyalost/p/12952930.html

PHP:

1、PHP垃圾回收机制

参考资料 :PHP: 引用计数基本知识 - Manual

浅析 PHP7 的垃圾回收机制 | Laravel China 社区

2、php-fpm的作用

3、hhvm的作用

4、配置一个php的环境

Brpc:

1、RPC有哪几种 ,具体说一下流式RPC

2、brpc和 grpc分别用的什么协议

3、gRPC用的什么协议?TCP三次握手?四次挥手?FIN-WAIT-2是什么时候的

4、RPC有哪几种?这里还问了一个流式 RPC怎么巴拉巴拉什么处理之类的,我想不起来了问的具体是啥了,只记得当时我就蚌埠住了

5、brpc 中bthread

https://its301.com/article/cjfeii/114702352

brpc框架学习之线程库 - 小秋尾chennhuang的日记 | chennhuang's diary

Kafka:

1、Mq积压

2、Mq重试太多怎么办

3、Kafka和zk之间的联系

4、Kafka副本备份的过程

5、消费者是推的还是拉的

6、Kafka吞吐量高的原因

7、RabbitMQ的消息模型都有哪些

8、kafka的消费组

Zookper:

1、问我zk了解原理不,讲了zab

ES:

1、ES工作时各个节点如何工作

2、ES查询的优化

ES查询性能调优实践,亿级数据查询毫秒级返回-腾讯云开发者社区-腾讯云

【ES 系列5】ES 查询优化 - 知乎

Elasticsearch搜索调优 - 1024搜-程序员专属的搜索引擎

3、ES的数据量有多大,查询耗时多少,耗时的瓶颈是什么,如何排查

一次看完28个关于ES的性能调优技巧-技术圈

🔍Elasticsearch 如何在几十亿数据量情况下提升查询效率? - 掘金

es 在数据量很大的情况下(数十亿级别)如何提高查询效率?-腾讯云开发者社区-腾讯云

4、项目中ES索引的设计,为什么要用这种数据类型,分词器用的哪个

5、高亮

Elasticsearch之高亮进阶-高性能高亮器, 让Elasticsearch飞一会儿_elasticsearch高亮插件_tiger_njit的博客-CSDN博客

6、ES中分析器有几部分?每一部分都是用来干啥的?

https://www.cnblogs.com/wupeixuan/p/12444528.html

https://www.cnblogs.com/qdhxhz/p/11585639.html

7、es集群,脑裂问题,怎么产生的,如何解决

es脑裂问题 - 简书

ES脑裂问题分析及优化_kakaluoteyy的博客-CSDN博客

8、es的参数配置怎么设计的?数据量多大?如何监控es

9、如果你有一个50个node的ES集群,你该怎么优化?

分为冷集群和热集群,热集群即为较新的数据,也是最经常被访问的,采用较高配置,比如SSD硬盘,大容量内存等;冷集群为老数据,不经常被访问,采用低配置,例如机械硬盘。查询时,在业务逻辑层面上,进行分开查询。(其实这道题目我是经过面试官提醒以后才答出来的)

10、ES的写入效率怎么提升

提升elasticsearch写入速度的案例分享_文化 & 方法_侠梦_InfoQ精选文章

自动生成docID ,合理设计mappings,在不需要进行分词的字段,采用keyword类型

降低refresh频率,频繁地refresh会导致频繁段合并,段合并会占用大量系统资源,影响写入速度降低flush频率,flush是将内存写入磁盘的过程,ES默认是每次都flush,实际上,如果能够容忍丢失的话,这个是可以更改的,可以更改为固定频率,或者调高阈值。

使用bulk api进行批量插入

11、如果bulk写入超时了应该怎么办?可以适当提高线程池最大线程数量

elasticsearch,bulk批量导入会有数据丢失,如何在大批量数据导入的情况下,数据完全写入?用logstash缓冲? - Elastic 中文社区

bulk写es超时问题 - 菜鸟学院

12、ES分片

理解elasticsearch的分片、副片 - 文章详情

13、ES集群分片数量过多造成的问题

Elasticsearch集群分片过多会有哪些影响_云搜索服务 CSS_常见问题_资源使用和更改相关_华为云

导致集群故障后恢复缓慢

海量分片 | Elasticsearch: 权威指南 | Elastic

Nginx:

1、Ngnix 的负载均衡算法

2、nginx如何配置反向代理、正向代理

Nginx 配置反向代理 - 个人文章 - SegmentFault 思否

Nginx反向代理配置-嗨客网

3、nginx如何处理网络请求

4、nginx中内存如何分配

【Nginx源码研究】内存管理部分 - Nginx源码分析 - SegmentFault 思否

Nginx源码分析-内存池 | 个人简介

https://www.cnblogs.com/uestcjoel/p/6687785.html

nginx内存池源码刨析 | 码农家园

Nginx 内存与共享内存的管理与分配_富士康质检员张全蛋的博客-CSDN博客

Nginx中文文档

Nginx文档

Nginx 处理 HTTP 请求需要经过哪 11 个阶段? | 极客时间_前端_陶辉_InfoQ精选文章

nginx如何通过连接池处理网络请求 - 掘金

https://www.cnblogs.com/crazymakercircle/p/17052040.html

记一次Nginx使用过程中遇到的问题和解决方案_「已注销」的博客-CSDN博客

Nginx 经典面试题(2022重构版) - 墨天轮

后端 - 深度好文:Nginx 是如何启动并处理 http 请求的? - 民工哥技术之路 - SegmentFault 思否

nginx【22】Nginx如何通过连接池处理网络请求_爱死亡机器人的技术博客_51CTO博客

网络:

1、http1.0、http1.1、http2.0以及http3.0【实现改变在udp的基础实现】区别

http1.1缓存 机制 :https://juejin.cn/post/6844903976354185230 

http2.0服务 推送 :HTTP/2 服务器推送(Server Push)教程 - 阮一峰的网络日志

HTTP/2协议“多路复用”实现原理chrome - HTTP/2协议“多路复用”实现原理 - 个人文章 - SegmentFault 思否

http3.0 QUIC :HTTP3.0和QUIC协议那些事_xquic_wolf鬼刀的博客-CSDN博客

一篇文章让你入门HTTP2.0 - SegmentFault 思否

2、htpp如何保证可靠传输、https解析过程

3、IO多路复用,select文件描述符为什么是1024,可以修改吗

4、http可以 实现 主动推送 的 功能 ,为什么 不用 http而是 使用 websocket

参考资料 :RSocket 学习(二):HTTP VS WebSocket VS RSocket - 掘金

html5 - WebSocket 原理 - ZAZ 的前端路 - SegmentFault 思否

HTTP1.1之后的长连接和WebSocket的长连接之间的区别 - 简书

HTTP1.1 中也实现了长连接,但是这个长连接中服务器还是被动的, 而且HTTP都是基于文本的,虽然底层TCP没有断开, 发送消息还是包含太多不必要的头部信息(带宽消耗大), 所以在某些场景还是 websocket 好用。

5、http的CA证书的 原理

前端 - Https基础原理SSL/TLS和 CA证书 - 个人文章 - SegmentFault 思否

6、非对称加密慢怎么解决

7、DNS解析介绍下,迭代查询、递归查询介绍一下

https://www.jianshu.com/p/6b502d0f2ede

8、http的请求头和body用什么来区分

9、http的请求头可以携带二进制数据吗

10、http无状态,如何标注用户身份

11、假如说我在你隔壁宿舍架设一台服务器,在你跟学校教务处建立HTTPS通信的时候,我伪装成学校教务处,跟你建立HTTPS连接,你怎么防止这种情况发生

12、世界上这么多证书认证机构,每一个的公钥你都要存吗

13、你如何验证百度是真的百度

14、HTTPS没有CA如何验证对方网站身份

15、如果你浏览器没有证书认证机构的公钥,去访问这个HTTPS网站时,这些网站是把公钥塞到你客户端了吗?如果是的话,又是什么时候塞到客户端的呢?如果不是的话,那又是怎么做的呢

16、HTTPS中自己的域名跟证书之间是什么关系呢

17、502,504联系和区别,如何解决

  • 502 Bad Gatewa:x 下游有问题、或者下游 php-fpm 未启动
  • 504 Gateway Timeout:网关本身超时

Http 状态码 502和504的区别?_http状态码504跟什么设置有关_芝麻酱堂的博客-CSDN博客

18、一般用什么服务器作为网关

19、给网关同时发送10个请求,是并行处理还是串行处理的

20、tcp和udp区别【close-wait状态,last-ack状态,time-wait状态】

TCP 的三次握手和四次挥手,了解泛洪攻击么 · Issue #105 · sisterAn/blog · GitHub

21、TCP4次挥手,time_wait是什么时候开始的,怎么解决大量time_wait存在的情况

22、浏览器输入url发生了什么

23、OSI七层模型说下

24、xss听过吗

25、tcp有个状态是Time_Wait,这个具体是在哪儿,作用是什

26、tcp四次挥手,为什么需要close-wait要发两次才能结束

27、每次请求,https 的公私钥固定不变吗?(第一次会协商和加密,之后同一个浏览器的话会用 session id 做 session key 的提取,可以看做固定不变)

28、http 报文头和报文体分隔符是什么?\r\n 是什么意思(回车+换行)

29、tcp发送请求后, 接收方网卡发生了什么

30、TCP四次挥手讲一下过程,最后一次ack如果客户端没收到怎么办

31、对于socket编程,accept方法是干什么的,在三次握手中属于第几次,可以猜一下,为什么这么觉得

32、NIO,Linux网络IO模型五种

33、有了解过强缓存和协商缓存吗?强缓存和协商缓存返回的状态码一样吗?分别是什么?

34、HTTPS 协议了解吗?里面用了哪些算法?非对称加密和对称加密分别用在HTTPS握手的哪个阶段?

35、HTTPS 存在安全性问题吗?有什么办法可以解决吗?

36、TCP拥塞算法

TCP流量控制、拥塞控制 - 知乎

37、TCP和UDP粘包如何处理

Java 基础知识

1、双亲委派模型是什么,作用是什么、好处是什么、可以不按这个模型来吗?

携程一面:什么是双亲委派模型?如何打破它? - 知乎

2、动态代理与静态代理的区别、分别在 Java 里哪些地方应用到了

操作系统:

1、僵尸进程的概念,如何解决僵尸进程,孤儿进程的概念

https://www.cnblogs.com/anker/p/3271773.html

2、进程和线程的区别,进程切换和线程切换的不同点【进程切换涉及虚拟地址】

参考资料:linux - 进程切换与线程切换的区别? - 计算机内功 - SegmentFault 思否

进程与线程 - Vane的博客 | Vane's Blog

进程、线程、协程和goroutine - Go语言中文网 - Golang中文社区

3、虚拟内存、物理内存、共享内存的区别和适用的场景

参考资料:一文理解虚拟内存、物理内存、内存分配、内存管理 - 知乎

https://www.cnblogs.com/liangping/p/12601281.html

4、设计一个进程的数据结构,应该包括哪些字段以及对应的字段类型是什么,为什么是这样

参考资料:第五十期-进程的数据结构 - 知乎

5、内存管理

https://www.eefocus.com/embedded/472064

Linux 内核 | 内存管理——Slab 分配器 - 一丁点儿

都2022年了,这个20篇Linux内存管理的期刊论文,你读了吗? | 程序员作品分享 - 欢迎分享你的创作 | 程序员论坛

万字长文,别再说你不懂Linux内存管理了(合辑),30张图给你安排的明明白白-

Linux内核内存管理算法Buddy和Slab - 知乎

6、解决内存碎片化的机制

Linux 动态内存分配机制详解 - ZiYang's Blog

malloc的底层实现(ptmalloc)_牛客博客

7、内存泄露的 原因,如何定位

内存篇 | 04 | 内存泄漏了,我该如何定位和处理? - 知乎

8、虚拟内存寻址

Linux内存管理,内存寻址 - 知乎

深入理解Linux内核之内存寻址 - ZiYang's Blog

9、线程什么是是有的

10、线程的局部变量被访问会造成什么

https://www.cnblogs.com/binghe001/p/12808419.html

https://www.cnblogs.com/myworld7/p/12264504.htm

11、什么是内核态和用户态

java - 从根上理解用户态与内核态 - 个人文章 - SegmentFault 思否

14 用户态和内核态:用户态线程和内核态线程有什么区别?.md

12、ls-l | wc -l 过程中 | 使用管道传递输入,这个过程中有几个进程

13、用kill -9 命令如果杀不掉一个进程怎么办

kill命令杀不掉进程怎么办?_kill杀不掉进程_codernavcom的博客-程序员资料 - 程序员资料

14、进程几种状态,什么时候相互转换

https://www.amhnn.com/note/%E8%BF%9B%E7%A8%8B%E7%8A%B6%E6%80%81%E7%9A%84%E7%9B%B8%E4%BA%92%E8%BD%AC%E6%8D%A2.html

15、原子操作,原子变量,如何实现的

原子操作是如何实现的? - 知乎

聊聊并发(五)——原子操作的实现原理_Java_方腾飞_InfoQ精选文章

https://www.cnblogs.com/FateTHarlaown/p/8919235.html

16、操作系统层面上,锁是如何实现的

17、操作系统里进程调度算法有哪些

18、大端和小端有什么区别

19、线程间通信的方式

20、同步和异步的概念

21、信号是什么

22、kill原理

https://www.cnblogs.com/mengxinJ/p/14286802.html

23、linux常用命令,查看硬盘剩余空间;查看父进程;某个进程内存占满,如何查看;find,grep区别

24、堆和栈的区别

25、进程和线程的区别

26、 IO 密集型和 CPU 密集型如何分配线程优先级

27、无锁编程(答了 CAS

28、一次普通 IO 的过程,什么时候用到了系统调用

29、操作系统的 IO 模型(阻塞,非阻塞,IO多路复用,信号驱动IO,异步IO

30、socket 如何标识一个协议(sock_type)

31、线程有哪些状态,等待状态怎么产生,死锁状态的变化过程,中止状态,interrupt()方法

32、你怎么理解线程安全,哪些场景会产生线程安全问题,有什么解决办法

33、空指针异常和内存缺页中断有关系吗

34、公平锁与非公平锁有了解吗?

35、介绍一下锁升级

36、如何根据ip地址查mac地址

37、介绍一下cpu调度算法

38、LRU算法,slab分配,如何减少内存碎片

39、CPU的执行方式

40、Linux了解哪些,基础命令和知识。问我proc文件系统了解么,答不了解

41、死锁的四个必要条件,如何避免死锁,如何检测死锁?

42、操作系统页、段等的概念

操作系统内存管理--简单、页式、段式、段页式_郭威gowill的博客-CSDN博客

场景:

1、假设我有多台服务器,将我的项目如果反向解析调用了别的服务器,如何实现,采用哪种方式(轮询、weight),分别说一下优缺点,以及特殊情况也要考虑(比如某一台服务器挂了,但是你并不知道是哪一台 )

2、如何并发100一个任务,同一时间最多并发10个

3、1千万的数据(假如都是数字),如何得到最大/最小的K个

4、微信发红包,如何实现

5、360开机 返回战胜多少百分比的用户的接口怎么实现

6、如果高峰期 有个用户的请求出问题并且没有采集 怎么排查这个问题

7、秒杀场景设计、超卖解决

8、设计一个新闻的系统

9、如果让你实现网关 你会做哪些功能

10、开放性问题,你设计的这个LRU缓存淘汰机制,在并发场景下存在一个锁限制性能的问题,你能想到什么方法去解决

11、两堆大数,100亿个数和10亿个数,找交集【十亿个数的集合和10w个数的集合,如何求它们的交集。集合的数字不重复】

12、直播房间,一个大V发了一条消息,如何让上千万的粉丝收到这条消息,如果只是纯粹的广播会很耗资源

13、设计一个秒杀系统能承受千万级并发,如果redis也扛不住了怎么办

14、一个文件里面有1000万个ip,如果求出现频率top10的?如何用shell脚本实现

15、总共有6亿用户,每天有6千万活跃用户,限制1个用户每1天可以抢的红包个数,设计一个接口,输入参数为用户id,输出为布尔值,表示该用户是否可以抢红包?这里每天的抢红包数要求可以动态配置,接口qps为几百。

16、动态配置系统怎么设计?

17、设计一个分布式系统来求PV、UV?每天要求一次怎么办?每次要求最近24h的怎么办?往分布式系统里面横向扩充一台机器会发生什么

18、假设有一个场景,系统需要某个特定时间内响应用户请求,比如说100ms内完成用户请求,但是在最高峰的时候每单位时间几百万的用户请求,也就是高并发,但我必须要实现系统响应及时,而且高可用(不宕机),假如你是架构师,你该如何架构这个系统,聊聊你的方案

算法:

1、一致性哈希的算法优点、原理、应用场景,为什么比普通哈希好

参考资料:java - 图解一致性哈希算法 - 全栈修仙之路 - SegmentFault 思否

2、八大排序算法:

参考资料:https://www.cnblogs.com/l199616j/p/10742603.html

【1】快排对近乎有序的数组排序会怎么样?怎么优化,快排对含大量重复元素的数组排序会怎么样?怎么优化?

3、LC 227 基本计算器

4、1只羊99头狼,规则是狼吃了羊,羊会死,狼自己也会变成羊,说一下最后的情况。(数学归纳法)

5、如何判断是否有循环引用

参考资料:如何判断JS对象中是否存在循环引用 - 掘金

6、怎么在指定的路径里找所有文本文件中带有“abc”的内容

7、如何查找一个很大的文件的部分内容

8、描述一下堆的结构,以及堆的创建,节点添加与删除的过程

9、怎么查看一个文件夹地下有多少个文件

ls |wc -c

10、拷贝双向链表

11、二分查找 【】

12、两个有序数组合并新的有序数组

13、鸡蛋掉落887. 鸡蛋掉落 - 力扣(LeetCode) (leetcode-cn.com)

14、至多k个字符的最长子串

15、口述链表是否存在环。数学证明。过渡到如果快指针一次走三步行不行

16、无序数组,找中位数。本质(topK)。

17、两个二叉树怎么比较

18、32个球,重量都不一样,只有一个天平,需要多少次才能找到最终的?需要多少次才能找到第二重的

19、递归反转链表

20、有三个奖品,每个有各自的概率,设计一个函数返回抽到的奖品

21、设计一个类似微信发红包的算法

22、三个线程打印ABC 10次

23、一道奇偶排序链表

24、零钱兑换

25、有效的括号

26、最低加油次数

27、有一堆桃子和一群猴子。如果每个猴子分3个桃子,还剩下59个桃子。如果每个猴子分5个桃子,最后一个猴子的桃子不够5个。问几个猴子?几个桃子

28、2张扑克牌抽两张相同颜色的概率

29、很多文件有重复的订单号 10位数的订单号

30、和为k的连续子数组的个数

31、口述topk

32、建堆过程

33、手撕,类似ip前缀树。我直接傻了,以前没写过前缀树

34、链表题:给个链表和 一个数字 k ,根据第 k 个节点 分割链表,再将两个链表分别反转后拼接在一起。

35、10g乱序文件找中位数,思路即可

36、链表查询怎么优化到 O(1)

37、多维数组回字型打印

38、 Next Key

39、二叉树的最近公共祖先

40、寻找两个正序数组的中位数

41、字典序的排序的话,时间复杂度是多少

42、实现一下LRU 缓存机制

43、递归方式对数组进行排序【快排】

44、给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先

45、对一个无序的栈进行排序,得到一个有序的栈

46、给你n个面额的硬币,给你一个amount,求凑出amount的最少硬币数,其中n

47、一个由0和1组成的数组,最多可以把k个0改成1,求最长的连续为1的子串长度

48、给n个数,不可重复取若干个出来,是否存在和为k的情况

49、子串包含问题(KMP 算法)写代码实现

50、100w个数,怎么找到前1000个最大的,堆排序,怎么构造,怎么调整,时间复杂度。

51、一个矩阵,从左上角到右下角,每个位置有一个权值。可以上下左右走,到达右下角的路径权值最小怎么走

52、快排的时间复杂度,冒泡时间复杂度,快排是否稳定,快排的过程

53、四辆小车,每辆车加满油可以走一公里,问怎么能让一辆小车走最远。说了好几种方案,面试官引导我优化了一下,但是还是不满意,最后他说跳过

54、写个生产者消费者模型算法leetcode二叉树的直径反问环节

55、求一个树的最大高度的思路

56、双向链表的插入

57、之字打印

58、并发编程中的生产者消费者模式代码

59、股票收益、str2int、树的最大路径

精品文章链接

文档 : es:应对故障 | Elasticsearch: 权威指南 | Elastic

bfe:https://github.com/baidu/bfe-book

brpc:BRPC: BRPC 即 Baidu-RPC ,是百度开源的 RPC 框架,在百度内部被大量采用,拥有超过 60 万个实例和 500 多种服务

leveldb:基本概念 — leveldb-handbook 文档

nginx:Nginx 内存池管理 · 理解 Nginx 源码 · 看云

go:https://draveness.me/golang/docs/part3-runtime/ch06-concurrency/golang-context/

设计模式:设计模式目录:22种设计模式

https://github.com/toutiaoio/awesome-architecture

https://zh.u1lib.org/

GitHub - jobbole/awesome-go-cn: Go 资源大全中文版, 内容包括:Web框架、模板引擎、表单、身份认证、数据库、ORM框架、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析、教程和(电子)书等。由「开源前哨」和「Go开发大全」微信团队维护。

https://github.com/yourtion/30dayMakeOS

https://github.com/NotFound9/interviewGuide

https://github.com/grpc/grpc-go

Nginx中文文档

介紹 | Nginx 中文官方文档

https://github.com/labuladong/fucking-algorithm

Seata AT 模式

BIO、NIO、AIO 内部原理分析 - 轨迹_的个人空间 - OSCHINA - 中文开源技术交流社区

https://github.com/xingshaocheng/architect-awesome

淘帖 - 即时通讯开发者社区!

GPU虚拟化,算力隔离,和qGPU

核心 API 参考文档 - etcd官方文档中文版

ETCD中文网 – 又一个WordPress站点

GitHub - taobao/nginx-book: Nginx开发从入门到精通

第 7 章 内存分配 | Go 语言原本

https://draveness.me/golang/docs/part3-runtime/ch07-memory/golang-garbage-collector/

梦的解析_一 一九○○年以前 有关梦的科学研究

在线阅读给心理治疗师的礼物雅罗姆, 第13-15页_PDF电子书_心理书籍在线阅读 - 心晴网

设计模式

Go设计模式01-单例模式 - Mohuishou

MySQL - MySQL InnoDB的MVCC实现机制 | Java 全栈知识体系

4.1 TCP 三次握手与四次挥手面试题 | 小林coding

channel 底层的数据结构是什么 | Go 程序员面试笔试宝典

https://www.cnblogs.com/yinbiao/p/15767096.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值