项目:
1、项目中熔断和限流怎么做的,熔断、降级、限流【方法:令牌桶、漏桶、滑动窗口】
1)、限流有哪几种方式?我扯了阿里sentinel的令牌桶、漏斗、冷启动、自适应限流(bbr、cpu load),为什么bbr公式能做到自适应限流?当时没想明白这个问题问什么,然后面试官说了可以根据结果来做调整。
参考资料: https://segmentfault.com/a/1190000023552181
Kratos 源码分析:限流器 Limiter - 熊喵君的博客 | PANDAYCHEN
服务容错: 服务容错模式 - 美团技术团队
单机器多线程限流
2、设计模式
3、序列化工具
参考资料 :ProtoBuf : Protobuf 终极教程
4、百万微服务如何定位出现的微服务
5、分布式 ID九种实现
9种 分布式ID生成方案,让你一次学个够 - Java进阶课 - SegmentFault 思否
6、注册中心是怎么实现的,是单独的组件还是集成于rpc框架里面。注册中心是单机的还是分布式的,分布式的注册中心是怎么实现的。注册中心是单机的还是分布式的,分布式的注册中心是怎么实现的
24丨注册中心:分布式系统如何寻址? | JAVA 架构师笔记
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
9、负载均衡算法
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 思否
17、布隆过滤器
5 分钟搞懂布隆过滤器,亿级数据过滤算法你值得拥有! - 掘金
18、分布式缓存:如果客户端想保存热点数据,如何设计
如何保证redis中存放的都是热点数据_代码搬运工.的博客-CSDN博客
19、热点数据如何从存储节点同步到客户端?是推送还是拉取
20、在线写一个LRU,如何加锁
阿里面试官让我实现一个线程安全并且可以设置过期时间的LRU缓存,我蒙了!
22、项目,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 查看进程阻塞,Linux下socket编程 多线程 进程超时阻塞、卡死问题定位_爱的巴掌的博客-CSDN博客
linux系统排查线程阻塞问题_linux 如何查一个thread 阻塞在哪个位置_锤%锤的博客-CSDN博客
36、Linux了解么,查看进程状态ps,查看cpu状态 top。查看占用端口的进程号netstat grep
37、回到网络,刚才你说到直播场景,知道直播的架构怎么设计么,要点是什么,说了几个不太对,他说要避免广播风暴,答不会
38、线上问题怎么排查?Full GC频繁怎么办
39、动态代理和静态代理区别,如何实现动态代理
Nginx正向代理和反向代理配置 - Martin的专栏 - SegmentFault 思否
nginx--❤️图解及代码实现正向代理、反向代理及负载均衡(非常实用,建议收藏❤️)-云社区-华为云
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 思否
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
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
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
12、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、慢查询分析
索引失效
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 水平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
36、select * from table t where size > 10 group by size order by size的sql语句执行顺序?
Sql查询原理与Select执行顺序(详细)-阿里云开发者社区
37、数据库中是否会出现死锁?数据库中的死锁避免是否可用刚才说的方法来避免?
38、如果进程一次锁住数据库中的多条记录来避免死锁,会带来什么问题?你觉得应该怎样解决这个问题?在这我回答了乐观锁,然后回答了乐观锁的实现原理
39、如果数据库中的确发生了死锁,应该怎么解决?我先回答简单的方法就是kill掉死锁中的 进程,破除循环等待。然后问了在死锁发生和kill掉进程过程中,会不会有其他操作。我绞 尽脑汁想了一个以前在论文里看到的,仅供大家参考,我回答在kill掉进程前,先检查锁住 相关资源的进程,如果有进程可以完成,那优先为这些进程分配资源,使其尽快完成后释放出资源
40、MySQL 平滑水平扩容方案
41、innodb的事务。主要涉及到mvcc以及视图回滚等,各个隔离级别下的问题以及如何解决?比如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_脚本之家
50、索引锁片化
记一次索引碎片引起的性能问题_sqlserver索引碎片危害_zhangzeyuaaa的博客-CSDN博客
51、普通索引和唯一索引改变数据之间的区别
Mysql - 普通索引与唯一索引之间性能差别change buffer_唯一索引和普通索引性能一样吗_it_lihongmin的博客-CSDN博客
52、联合索引的B+数据结构
联合索引在B+树上的存储结构及数据查找方式_联合索引b+树_问北的博客-CSDN博客
53、为什么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
6、redisc的codis架构
参考资料:浅析MySQL二段锁 - 空中漫步 - SegmentFault 思否
7、缓存穿透和缓存雪崩
8、redis分布式锁 的 实现
面试官:你真的了解Redis分布式锁吗? - 技术进阶之路 - SegmentFault 思否
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
20、redis 跳表
21、redis大key为什么慢、如果删除需要注意什么
22、为啥redis使用跳表,而不使用B+树
23、使用setnx时,且setnx删除失败了,如何保证数据的强一致性
24、缓存击穿、穿透、雪崩
25、redis过期策略
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、内存泄露的 原因,如何定位
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 的重写,以及作用
26、golang 控制反转、依赖注入
Go编程模式:委托和反转控制 | 酷 壳 - CoolShell
https://sgfoot.com/gof-ioc-code.html
27、go协成池
https://www.cnblogs.com/wongbingming/p/13091091.html
后端 - 100 行写一个 go 的协程池 (任务池) - 个人文章 - SegmentFault 思否
深入浅出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、内存逃逸讲讲
为什么栈比堆快
37、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查询性能调优实践,亿级数据查询毫秒级返回-腾讯云开发者社区-腾讯云
Elasticsearch搜索调优 - 1024搜-程序员专属的搜索引擎
3、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脑裂问题分析及优化_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 中文社区
12、ES分片
13、ES集群分片数量过多造成的问题
Elasticsearch集群分片过多会有哪些影响_云搜索服务 CSS_常见问题_资源使用和更改相关_华为云
导致集群故障后恢复缓慢
海量分片 | Elasticsearch: 权威指南 | Elastic
Nginx:
1、Ngnix 的负载均衡算法
2、nginx如何配置反向代理、正向代理
Nginx 配置反向代理 - 个人文章 - SegmentFault 思否
3、nginx如何处理网络请求
4、nginx中内存如何分配
【Nginx源码研究】内存管理部分 - Nginx源码分析 - SegmentFault 思否
https://www.cnblogs.com/uestcjoel/p/6687785.html
Nginx 内存与共享内存的管理与分配_富士康质检员张全蛋的博客-CSDN博客
- 配置文件模块
- nginx内存池+高级数据结构
- 进程间的通信机制
- Nginx使用过程中的常见问题总结 _ 【IIS7站长之家】
Nginx 处理 HTTP 请求需要经过哪 11 个阶段? | 极客时间_前端_陶辉_InfoQ精选文章
https://www.cnblogs.com/crazymakercircle/p/17052040.html
记一次Nginx使用过程中遇到的问题和解决方案_「已注销」的博客-CSDN博客
后端 - 深度好文: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、世界上这么多证书认证机构,每一个的公钥你都要存吗
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拥塞算法
37、TCP和UDP粘包如何处理
Java 基础知识
1、双亲委派模型是什么,作用是什么、好处是什么、可以不按这个模型来吗?
2、动态代理与静态代理的区别、分别在 Java 里哪些地方应用到了
操作系统:
1、僵尸进程的概念,如何解决僵尸进程,孤儿进程的概念
https://www.cnblogs.com/anker/p/3271773.html
2、进程和线程的区别,进程切换和线程切换的不同点【进程切换涉及虚拟地址】
参考资料:linux - 进程切换与线程切换的区别? - 计算机内功 - SegmentFault 思否
进程、线程、协程和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张图给你安排的明明白白-
6、解决内存碎片化的机制
Linux 动态内存分配机制详解 - ZiYang's Blog
7、内存泄露的 原因,如何定位
内存篇 | 04 | 内存泄漏了,我该如何定位和处理? - 知乎
8、虚拟内存寻址
深入理解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、进程几种状态,什么时候相互转换
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、如何判断是否有循环引用
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次
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://github.com/yourtion/30dayMakeOS
https://github.com/NotFound9/interviewGuide
https://github.com/grpc/grpc-go
https://github.com/labuladong/fucking-algorithm
BIO、NIO、AIO 内部原理分析 - 轨迹_的个人空间 - OSCHINA - 中文开源技术交流社区
https://github.com/xingshaocheng/architect-awesome
GitHub - taobao/nginx-book: Nginx开发从入门到精通
https://draveness.me/golang/docs/part3-runtime/ch07-memory/golang-garbage-collector/
在线阅读给心理治疗师的礼物雅罗姆, 第13-15页_PDF电子书_心理书籍在线阅读 - 心晴网
设计模式
MySQL - MySQL InnoDB的MVCC实现机制 | Java 全栈知识体系
4.1 TCP 三次握手与四次挥手面试题 | 小林coding