从别人blog偷的~,自己复习用
爱奇艺
一面
- 介绍项目
- 项目中用到的设计模式
- 项目中如何处理高并发
- Redis集群
- Redis RDB 和 AOF原理
- Redis除了缓存和分布式锁还能干什么?
- 数据库如何优化,索引的数据结构,多表联合如何优化
- Redisson+AOP逻辑,Redisson的原理
- Spring,SpringBoot,SpringCloud原理
- SpringCloud各个组件介绍
- Zuul,Ribbon实现原理
- 什么是中台。业务特殊处理的功能可以放在中台吗
- 亿级数据如何做的存储与优化
二面
项目问的比较多
- 说说中台是什么?中台是一堆服务的集合嘛?
- 咨询中台的架构设计如何(按照DDD战略设计回答)?项目里代码架构是怎样的?
- Redission + AOP的逻辑
- 分库分表是怎么去分片的?
- 说一次服务内出现问题,如何排查的经历
- 遇到过消息丢失的情况吗?怎么处理的?消息可靠性保证
- 如何去做到的多端同步?
三面
- JOOQ和MyBatis的实现原理
- 谈谈多态的理解
- 组合,多态,继承之间各有什么好处?
- List和Map有什么区别
- 二叉查找树与红黑树有什么区别
- 聊聊乐观锁与悲观锁,数据库的应用,平时项目中的运用
- 什么是中台?谈谈你对中台的理解?
- 中台和前台有什么区别?
- 使用中台的时候遇到过什么好处和坏处
蚂蚁金服
一面
1.介绍下亮点项目(问的非常深入)
-
消息可靠性保证
-
这个消息可靠性保证与MQ有什么区别?
-
收件箱项目。怎么想到使用Redis做收件箱的?
2.Redis的RDB与AOF
3.Redis的过期淘汰以及删除策略
4.分布式事务(重点问了项目里如何实现最终一致性)
5.谈谈垃圾回收,常用的垃圾回收算法
6.如何解决项目中遇见的问题?
7.Mysql如何解决慢查询?索引的数据结构?
8.Mysql中的乐观锁与悲观锁
9.并行开发多个任务时,如何安排?
10.团队中所担任的职责?主负责项目时如何安排团队协作
二面
- 分库分表怎么做的?
- 消息是怎么保存的?如何流转的时候保证会话根?
- 项目中如何保证的事务一致性?
- 最近读过什么书?
- 如何保证的数据一致性?在支付领域,写完直接查询,查询不到怎么办?列举一些解决方案?
- 实现一个特殊队列
queue.offer("key1",”value1");
queue.offer("key2",”value2");
queue.offer("key3",”value3");queue.take(); key1-->key2-->key3
queue.take("value2) ; key2-->null// 写是单线程,读是多线程
三面
- 高扩展的咨询框架是如何开发的?怎么做到搞扩展?举个栗子呢?
- 消息服务是怎么做消息收发的?为什么使用HTTP而不使用MQ?使用HTTP带来的好处是什么?弊端是什么?如何去解决?
- 遇到的严重线上事故是怎样的?多少人几天解决的?从中学到了什么东西?
- 你觉得在上家公司获得的最大技术提升是什么?如何使用ddd使得代码模型与业务模型相同?举个例子?(举了病历的例子)病历有哪些属性与行为?如果病历数量达到10万,需要额外去考虑一些什么问题?
- 两次跳槽的原因是什么?不怕被人说跳槽频繁嘛?
- 你最佩服的人是谁?为什么?
- 你觉得你写的代码怎么样?为什么?
- codeReview的时候,别人如何评价你写的代码?你觉得别人的代码最大的问题是什么?
- 你们的团队多大?你的绩效如何?你觉得为什么你可以获得这样的绩效?
得物
一面
- SQL优化是怎么做的?
- 保持的代码规范是怎样的
- 怎么看SQL使用了哪个索引
- Mysql隐式转换了解过没?
- ConcurrentHashMap原理,为什么要转换为红黑树,为什么到8时进行转换?
- JVM垃圾回收机制,GC算法,GC回收器
- volitile关键字如何保证可见性,MESI协议
二面
- Mysql 如何做优化
- 什么是脏读?什么是可重复读?什么是幻读?
- Mysql如何解决脏读,可重复读,幻读?
- Mysql的Redo Log,Undo Log,Bin Log的执行先后顺序是怎样的?写Bin Log时异常了怎么办?
- 了解过索引下推嘛?
- Explain会展示什么?type里面有哪些字段?分别什么含义?
- 一条请求在Mysql中的执行流程?
- Redis的常用数据结构,常用对象有什么?
- Redis的哈希数据结构是怎么扩容的?底层是否会有线程在后台执行扩容?
- Redis跳表的层级是如何生成的?
- Redis集群的原理?集群之间是如何通信的?增加节点会如何操作?主从如何切换?
- 了解过Paxos协议嘛?
- 同步,异步,阻塞,非阻塞分别指什么?
- 同步非阻塞的实现有什么?IO多路复用
- TCP和Ping命令有什么区别?
- 如何判断网络问题?是交换机出问题?还是网卡问题?还是DNS问题?
- 什么是动态规划?
- 不考虑空间复杂度,什么排序速度最快?(统计排序)
- 有没有复杂度为O(logn)的排序算法?为什么没有?
哈啰出行
一面
- 讲讲项目
- 如何使用的策略模式+工厂方法+模板,类结构是怎样的
- 项目的结构是如何的,Controller和Service的关系
- 如何使用DDD开发的消息服务
- 领域模型是怎样的,领域模型和Controller如何关联,领域模型的事件驱动
- 谈谈如何使用DDD划分电商领域功能,为什么搜索商品要单独划分一个领域?如何设计搜索领域的领域模型
- Spring IOC的理解,Spring对象使用的线程安全问题(单例,多例)
- 线程安全问题解决,Synchronized,ReentrantLock区别
- volitile原理,JMM和MESI协议
- 线程池核心线程数怎么进行配置?
- Redis缓存与数据库数据如何保证一致性
- 谈谈RPC协议,与HTTP调用有什么不同
- Innodb数据是如何存储的?谈谈聚簇索引。
- 数据页的数据是有序的吗?如何保存的?
- 一张表有课程,学生,分数,如何查询每门课的学生平均分?如何查询选修课程大于10人的平均分?
二面
- 谈谈亮点项目
- Redisson+AOP是咋实现的?Redisson的原理。为什么不使用Spring的@Cached?
- 算法:股票买卖问题
- 针对算法,如何写单元测试?
携程
一面
- 谈谈项目
- 一条消息的流程
- 设计模式的理解,如何使用责任链模式
- 谈谈Collections和Map的下属分支,HashSet的value为何定义了一个空对象而不用null
- HashMap为何链表长度到8之后转换成红黑树?
- 线程池的参数如何去配置?
- Mysql索引的数据结构
- 如何做SQL优化
二面
- 为什么要做分库分表?分库分表效率提高了多少?
- 说一下消息的流程
- 项目的QPS多少?是否有做监控?
- 如何做的SQL优化?有用过分区表嘛?
- 是否有大数据开发经验?
美团
一面
- 分库分表使用了什么分片算法?如果历史消息特别多怎么办?
- Spring如何解决循环依赖?
- Volitile原理
- Synchronized原理,Synchronized锁升级
- 线程池的原理?
- CAP原理是什么?Redis是CP还是AP?
- Redis怎么保证的AP
- Redis为什么吞吐量那么高?
- Redis的数据结构为什么很巧妙?字典对象的底层数据结构
- Java8有什么新特性?stream的原理是什么?
- Mysql索引是一个怎样的数据结构?
- 聚簇索引和非聚簇索引有什么区别?
- Mysql 的事务隔离级别?默认隔离级别?如何解决幻读?MVCC机制?
- Mysql drop,truncate的区别
- 线上实例是怎么配置的?内存和大小是多少?
- 实例可以创建多少个线程?一个线程约占多少大小?
- 算法:反转后半部分链表
一面(换了个部门面)
- 消息服务如何保证消息可靠性的?
- 谈谈什么是中台?为什么要使用中台?如何保证中台的高拓展与通用性
- 如何参与的服务设计?主要在咨询中台负责什么?
- 分库分表如何调研?
- JVM分成哪些区域?这些区域会因为什么问题出现OOM?
- 项目中使用到的JVM参数有哪些?
- 服务中哪些地方用到了Volatile,Volatile的原理?Volatile加锁了吗?什么是事件总线锁?
- 什么是死锁?
- 谈谈G1收集器的原理,JDK11还新增了哪些垃圾收集器?
- 介绍下线程的状态有哪些?
- 服务中哪些地方使用了多线程?线程池的参数是怎么配置的,为什么?
- 线程池如何进行监控?如何动态的配置线程池
- Redis有哪些集群模式?哨兵模式和主从模式的区别,哨兵模式的缺点在哪?
- Redis是如何进行主从复制的
- Mysql是怎么进行主从复制的?主从瞬时不一致问题是如何产生的?
- Mysql的buffer pool了解过嘛?为什么要有buffer pool。
- 项目里是如何搭建的一个高可用系统的?
- 题目:写一个死锁
二面
- 项目流程,非常细。会话的状态有哪些,会话超时,托管中这种状态是不是不应该算在状态机中?患者一段时间不回复关闭会话是怎么做的?如果这种会话数据量非常大怎么办?线程池怎么配置?主线程如何阻塞住?
- 算法: 二叉树的最近公共祖先
- HashMap和LinkedHashMap的区别
- Synchornized的实现原理,cxq队列是保存在哪里?monitor对象有哪些属性?是如何锁住的
- Redis有哪些数据结构?为什么Zset要用跳表而不用红黑树?Redis使用什么协议与客户端进行通信的?
三面
- 算法:链表内指定区间反转
- 谈谈做的项目
- 消息服务使用HTTP与MQ之间的优劣有哪些
- 收件箱的实现,如果数据量非常大的时候如何处理?
字节跳动
一面
- HashMap的原理?为什么线程不安全?
- Mysql的四种隔离级别..做题..
3. 可串行化隔离级别在Mysql中是如何实现的?
4. MVCC机制
5. 做题:求乱序数组中第K大的数,不能排序
6. Redis的字符串是怎么去实现的?SDS有哪些好处? String如何保证的二进制安全?
7. Redis原生分布式锁有哪些问题?释放锁的时候会怎样,如何保证原子性?
8. Redssion如何续租?
9. Redis集群脑裂问题?
10. 跨域问题是什么?如何解决?
11. 有哪些IO模型?
12. 什么是 同步,异步,阻塞,非阻塞
13. 进程和线程有什么区别?句柄是线程还是进程?(没答好,问题都没听懂= =)
14. DDD的好处有哪些?有做过事件风暴嘛?
二面
- 做题:文件夹管理系统(支持新增、删除、移动、重命名文件或者文件夹,支持罗列某个文件夹下的子文件或者子文件夹并按创建时间排序)给出Mysql表结构,索引来实现此需求
- B+Tree的查找复杂度是多少,log的底数是多少?为什么呢?能不能从BTree查找的底层来解释?
- Mysql的当前读与快照读区别是什么?会加锁嘛?
- Mysql如何处理慢查询?
- 讲一下你知道的Mysql所有的锁
- 如何排查网关502问题?502与504状态码有什么区别?
- 有哪些推送消息的方式?HTTP,WebSocket还有嘛?
- HTTPS是对header加密还是body加密?使用了哪些加密算法?
- 项目中如何拆分微服务
- 算法:大数加法,求大数加法,输入两个字符串(大数),输出两个字符串的和
- HTTP3.0有什么新特性?
三面
- 说说你的亮点项目
- 项目中如何去保证系统高可用的,项目中如何做分层?
- 算法:一个随机函数能等概率生成'a'—>'d'的字母,要求使用该函数等概率生成'a'—>'f'的字母
- 数据库题:1)查询每个学生分数最高的记录(如果重复一起查出来)2)查出每个学生分数第二高的记录(如果重复一起查出来)
- 算法:前序遍历数组,中序遍历数组求出后续遍历数组
四面
- 谈谈项目中出彩的地方
- Spring IOC是什么?实现原理?Spring中还有什么细节?
- 算法:跳格子的游戏,每个格子上有一个数,从第一个格子出发目标是到达最后一个格子,所在的格子上的数字,决定了下一步能够跳跃的最大距离。找出最少的跳数,无法到达返回-1,尽量低的时间复杂度。 int getMinSteps(int[] arr) 3 5 0 7 1 。。。 3 2 0 0
- Redis RDB,AOF实现原理
- DDD项目中的应用,DDD优势是啥?
- 浏览器输入网址后发生了什么?
- HTTP有哪些组成?Header,Body里面有什么?还有嘛?
- HTTPS的流程