顺丰-1面:
- 项目中有什么难点?
- Redis用来做了些什么?
- Redis的做布隆过滤器是怎么玩的?
- 使用Redis时,怎么考虑用哪种类型?
- Redis为什么快?
- Redis内部实现的大致原理是什么?
- Redis的高可用怎么保证?
- 怎么保证MQ消费幂等性?
- 怎么实现消息的有序性?
- 怎么保证MQ的可靠性投递?
- 怎么解决MQ的积压问题? (在消费者不扩容的前提下怎么解决?)
- A系统同时给B系统分别发送2个请求(先insert请求后update请求),B有部署两个节点,你怎么保证在B系统的两个节点上执行是有序的?
- 讲讲Java中的集合,并发,Queue队列相关的东西。
- Spring中的生命周期?
- SPring中是怎么实现事务的?
- 如果要对线上某个表的一个字段长度扩容,你会考虑什么?
- QPS1万+的查询接口你怎么设计?
- QPS1万+的有状态接口你怎么设计?
顺丰-2面:
- 介绍项目业务?
- 怎么保证上下游系统间数据的一致性?
- 怎么保证数据的幂等性? 如何利用tokenID来实现幂等?
- 你们用Redis干些什么?
- 如果Redis挂了,怎么办?(从降级,限流,快速恢复角度去答)
- Redis脑裂咋办?
- 如果Redis集群中一个节点挂了,怎么保证高可用? (问题有点模糊)
- Redis的分配一致性哈希算法?怎么解决的数据倾斜问题?
- JDK里面有哪些引用关系?(强,软,弱引用,以及使用场景上回答)
- FullGC和OOM溢出有啥关系?
- 有遇到过OOM嘛?怎么解决的?
- 讲讲JVM哪些区域里会发生OOM,在代码中应该如何避免?
- 高并发下对MySQL的表结构设计,好操作时,要注意些什么?
- (我主要是从事务粒度,锁粒度,扫描行数,是否走索引来回答)
顺丰HR-3面:
反正就是一些常见没有意义的题
问期望工资
优缺点
沟通情况等等
YY直播-1面:
- Netty 的粘包拆包方法有哪些?
- Kafak的 broker是什么?
- Redis分布式锁,怎么实现可重入锁?
- Redis,Hash,List,Set分别对应的底层数据结构?
- 了解意向锁嘛?
- 什么是覆盖索引,什么是索引下推?
- 什么是redoLog日志?
- 说说RedoLog日志和Binlog日志的怎么使用?
- 什么是MVCC机制?
- 讲讲红黑二叉树?
- 怎么排查线上实例CPU飙高的问题?
- JVM参数配置需要注意一些什么?
- 为什么堆大堆小内存要设置一样?
YY直播-2面:
1.你们布隆过滤器怎么实现的?
2.怎么在BitMap上解决哈希冲突问题的?
3.为什么不直接用Order作为Key,直接以KV形式存储在Redis里面?(占内存)
4.Redis用的什么集群?Redis有做读写分离吗?
5.怎么利用Redis做的MQ幂等性?
6.怎么利用Redis来设计每日热搜排行榜?
7.Redis分布式锁有几种实现方式?
8.Redission底层是怎么实现分布式锁的?
9.Java中Syncroinze锁和ReenTrantLock有什么区别,底层怎么实现的?
10.问几个Linux命令:(都没答上来)
怎么查询IO磁盘占用了多少?
怎么查询内存占用多少?
怎么查询CPU占用?
怎么查询网络连接占用多少?
11.怎么利用MySQL实现分布式锁?
12.MySQL建表的时候,你要考虑一些什么?
(字段类型,长度,索引设计,null值,编码等去聊)
13.设计题:有20个群,大概每个群1万人,需要在15-16点的时候,会在群里的右下角展示一个图片,图片中投票按钮,和显示 “已投人数”,投完票后显示本群已投票的人名榜,按住投票先后排序。 这个你怎么设计?
。。。。二面后挂了:面试评价:Java基础较好,但是Linux知识比较差,因此知识面不广。
\
\
富途-1面:
- 浏览器发起请求后经历了哪些过程?
- HTTP由哪些部分组成?
- 三次握手四次挥手分别传递了什么信息?
- HTTPS协议的区别? 对称加密先做了非对称加密?
- 一个SQL查询题?
- 一个SQL表设计题?
- 一个场景提?
- 一个字符串解析题,需要用到递归去实现。
- 一个级联关系的JSON,怎么解析,据说在什么加密算法里有使用到?
。。。其他的忘了,反正前前后后面了一个小时
富途-2面:
1.有AB两个数组,判断B是否为A的子集。(编码题)
2.一副扑克牌,没有大小王一共52张,从里面随机抽2张,问抽到颜色相等的概率是多少。(算术,思维题)
3.一堆桃子分给一群猴子,如果每个猴子分3个,还剩59个;如果每个猴子分5个,那么最后一个猴子分得的桃子不够3个,你能求出有几只猴子,几个桃子吗?(思维题)
4.事务的四个特性?分别解释一下四个特性
5.事务怎么实现的?Spring里面又是怎么实现的?
6.TCP协议的三次握手
7.TCP以及握手中发送了什么信息
8.如果利用第三次握手后如果没有返回服务端,会发生什么?
。。。面完后挂了:算法写出来了,数学题没做出来。
朴朴买菜-1面:
- 熟悉线程、线程池的参数使用以及原生线程池的一些问题
- 了解synchronized,了解锁优化,了解voliate,lock的底层原理
- 了解jvm的原理,对jvm做的调优,比如导致数据场景,调大新生代,避免对象今早进入老年代
- 使用过工具分析过dump文件
- 了解数据库索引结构、知道聚集索引,非聚集索引,了解索引下推,b+树结构等
- 会使用explain分析慢sql,遇到过隐式转换导致索引失效
- redis这块用过分布式锁,用过sortedset(主要拿来排序,场景是延时队列,不是常见的redis延时队列方案),使用过bitmap,配合lua脚本实现限流
- mq使用简单了解,知道消费不丢,了解顺序消费,了解幂等消费方案
朴朴买菜-2面:
- 如何解决系统调用时数据的一致性问题。
- 刷数据问题:要求使用time_update更新,避免漏数据。刚好在分页节点,多条记录time_update 一样的时候,使用id排序做游标, 包括深分页的优化。
- 上述业务有无其他方案,能想到消息的方式,但是觉得过度设计,宁愿这种耦合。
- 对DDD、领域事件有基本了解
- 接口优化,线程池、事物粒度等角度讲。
- 有个特别的设计:开票二维码的code,有自定义的规则判断是否有效,避免无效请求。
- 按照场景提前加载缓存。穿透问题有考虑,方案只是使用了单机线程池,流控方面比较缺少
- 固定窗口、滑动窗口等方案了解,面试过程能细的讲滑动窗口的自定义实现(数据结构不优)
- 压测方案怎么指定?解读和场景方面缺少。
\
朴朴买菜-HR面:
问为啥离职,介绍深圳计算团队,是做供应链的,人数就几十个人,然后直接
谈工资,谈期权。(社保低,公积金高)
\
玄武科技-1面:
- 聊聊JVM虚拟机
- 聊聊JVM内存模型,GC,对象回收算法。
- 聊聊Java中的多线程要考虑的问题?(原子性,隔离性,有序性,从这三方面去切入)
- 聊聊java中为了解决线程安全的东西,锁,队列,volatile,安全容器,原子变量等等。
- 聊聊Jvm的类加载,对象创建,Javac,类加载器,双亲委派,JavaAgent动态代理,cglib动态代理从这些去聊)
- 聊聊Java中的IO模型,AIO,BIO,NIO。这些。
- 了解Netty底层的实现吗?聊聊多路复用,React模型,select,poll,epoll模型。
- 聊聊Spring中的东西,IOC,DI,AOP这些。
- 聊聊SpringBoot里面是怎么设计的,SPI机制,start怎么实现的,那一堆吧。
- 聊聊SpringBoot中内嵌的Tomcat,和Jetty有什么区别?
- 聊聊Innodb中的索引结构。
- 聊聊SQL优化时,和建表时需要注意哪些。(建表时,select查询时,修改插入时, 从这几方面切入)
- CodeReview时,你会注意哪些方面?(可读性,拓展性,性能 从这三面去总结)
- 聊聊你知道哪些设计原则,开发时是怎么体现的?:(单一,开闭,里氏替换原则)
- 聊聊TCP为啥时可靠性传输?
- 为啥TCP连接时要三次握手,断开时需要四次握手?
玄武科技-2面:
- 问了一下项目业务?
- 有哪些难点?
- 介绍一下分库分表过程是怎么实现的?
- 讲讲你做了哪些技术方案?
- 讲讲GetWay的原理?
- 如何设计一个高并发的系统?
- RocketMQ的底层实现?
- 。。。反正正常是面过了,但是面试官的结论,基础好,深度意识可以,就是缺少高并发的场景。
玄武科技HR-3面
期望薪资?
为什么想来深圳?
自己擅长什么?
基本上就是闲聊?
奇虎360-1面:
- synchronized的底层原理
- 什么是内存逃逸分析?
- volatile的底层原理
- AQS底层原理
- 用了哪些NoSQL数据库,为啥要用Mongodb不用MySQL。
- 你们CodeReview会注意哪些?
- 你们采用敏捷开发模式,是怎么去推动?
- 有没有遇到过那种迭代穿插进行的时候?
- 你们Excel导入是怎么优化的?
- Redis怎么实现的项目重启保证幂等性问题?
- 有哪些JVM调优的经历?
- JVM调优有哪些参考指标?
- G1和CMS回收器有什么不同?
- 你们那边网络安全是怎么保证的?
- 你知道哪些网络安全漏洞?
- 对下一个公司有什么期盼?
- 有干了哪些开源的事情?
。。。面过了,后面问我现在的工资和期盼,我拒绝,没告诉他,感觉他不是leader,只是处于好奇问的。
奇虎360-2面:
上次Log4J的安全问题有了解吗?是怎么实现的线程不安全?
还有个什么场景题?我给忘了?
介绍了一下项目
怎么保证请求的有序性?
其他:
据说第一面评价说技术OK,所以就没多问技术方面的问题了,介绍了他们公司的情况。
据说这个他们项目组是去年被360收购的公司,组织架构现在是360集团,行政福利都一样,只是现在还没搬到广州总部一起办公,属于游离状态。
奇虎360-3面:
目前还没约面,Boss特意给我打了个电话,因为Boss在深圳被隔离起来,无法现场面对面交流。
Boss说后面有时间再约我,感觉他们也不着急的样子。而且他们技术团队只有二十多人,是去年新收购的,目前还没有和360总部的在一起办公,目前是属于自己管自己,但是组织架构和福利待遇和360总部保持一致。
\
致景科技-1面:
- SQL调优有哪些?
- 讲讲并发线程安全?(多节点线程安全&单系统中的线程安全)
- 讲讲负责的系统业务?
- 讲讲分布式锁的实现?如果获取锁失败怎么办?
- 讲讲Redis限流怎么实现的?(固定窗口+弊端)
- 分库分表你们是怎么做的?(调研+方案+上线+数据迁移+测试)
- 对未来的规划?
致景科技-2面:
要我去线下面试,放他鸽子了。。
三七互娱-1面:
问了一下大数据相关的东西,什么数据建模之类的。
基本上是问的一些开发思想,规约,建设,感觉面试官不是做Java开发的
三七互娱-2面:
- 你们的迭代是怎么跑的?
- 怎么JVM调优?
- OOM问题,你们是怎么解决的,有考虑过这个NIO框架里为啥会OOM嘛?
- File文件压缩工具怎么做优化?用到了NIO中的哪个特性?
- 什么是零拷贝?
- 你们为什么要重构?怎么做重构的?怎么保证重构后的新老服务无缝对接?
- 针对一些C端APP,不改变接口的情况下,如何切换新老服务?(反向代理,网关,IP切换等)
- 如何实现重构后的AB(灰度发布)发布?
- 你们是如何管理开发,测试,线上不同环境的?
- 如何管理代码分分支的?(Gitflow?)
- 系统部署环境是你们整的嘛? (用的Jenkins,脚本是运维写的)
- 为何要自己搭一套FastDFS?
- 讲讲线上SQL事故,为啥要弄Soar工具,有啥好处,比Expain分析工具好在哪里?
- 最近做的一次技术分享是什么?
- 为啥要用ES替代ADS? (成本,场景)
- 有做过大数据或者用户画像方面的系统吗?
- 你们一般有哪些技术OKR?
- 对加班有什么看法?
三七互娱HR-3面:
给了定级P5,年包34万左右,HR说1,2,4加班到九点
做的是斗罗大陆,等游戏后台的营销,支付,等一个游戏平台部门,
工作内容:对接和开发占比 3:7, 平时可能回写写SDK之类的
听做游戏开发的朋友说,三七互娱很卷,劝退。
格力电器-1面:
- 说说HashMap的底层数据结构?
- HashMap的扩容实现?
- HashMap出现线程不安全的原因?
- 讲讲 并发包里熟悉哪些类?
- 知道ReentrantLock底层是怎么实现的嘛?介绍一下里面的CHL队列?
- 讲讲NIO,BIO,AIO的区别?
- 讲讲BIO是在哪个阶段发生了阻塞? 用户空间-内核空间的哪个阶段阻塞?
- 讲讲NIO的多路复用模型?
- Poll,epoll的区别? (轮询,通知,水平触发,边缘触发)
- 讲讲Redis和Nginx中的NIO实现嘛?(equeue,Event事件驱动等,多路复用模型等)
- 你们Redis用的是什么集群?
- Redis Cluster集群部署时,Redis多主节点,是把Key落到Hash槽位中前,这个Hash值是在客户端算出来的还是在服务端算出来的?
- Redis多节点要扩容时,是怎么实现的?
- 讲讲Hash一致性算法?
- 一个API接口出现卡顿,你如何排查问题? (监控判断瓶颈位置,如网关,第三方接口调用,慢SQL,锁超时等。JVM进程层面:判断是否发生了FullGC,是否有线程池配置不够等。Linux层面查看CPU占用,内存占用,网络阻塞情况等。)
- 讲讲为啥用来Nginx还要用Getway网关,有啥区别?
- GetWay出现了断言清空问题?你怎么排查? (GetWay的自身Bug,他们遇到过)
- Nginx怎么实现高可用? (LVS前置负载均衡,SLB ,Nginx层层代理,但是有20%的性能损耗等)
- 为啥要使用Nginx,为啥不直接挂Tomcat,这样就课没损耗了?
- 讲讲设计一个API接口,要注意哪些问题?
- 怎么保证前端表单不会出现重复提交? (表单不会被抓包抓到重复发送数据请求过去?)
- 你们有哪些场景案例提升了接口的QPS?
格力电器-2面:
- 讲讲JVM?
- 你们JVM参数有哪些?为啥要这么设置?
- 讲讲有哪些GC回收器?分别怎么用的?
- 有哪些垃圾回收算法?
- JVM参数模板上可以指定用哪种算法吗?
- 做过哪些JVM调优?
- 用过哪些OOM排查工具,怎么排查的?
- 用的阿里那套微服务框架嘛? 对那个东西熟?
- 了解GetWay网关吗?
- 做过哪些QPS提升的东西?
- 做过压力测试吗?
- 了解多少Redis?用的什么集群?
- 知道Proxy集群模式吗?实现Redis代理的?
- MySQL的行级锁是怎么实现的?
- MySQL的事务是怎么实现的?
- BinLog日志有哪几种模式?statement模式,rows, statement+row结合
- Cancel有了解吗? 他是用的哪种模式做的数据采集?
。。。挂了,面试官是公司同事的朋友,不配来应聘他们的高级,他们要的能解决问题的能力,线上排查问题的能力,而不是单纯写业务,背八股文的。
格力电器-HR面:
- 为什么离职?
- 对下个公司有什么期盼?
- 你在当前公司的职责是什么?
- 你的身高体重,是否结婚?
- 期望薪资
- 格力 电子商务公司 数字化互联网 转型,
- 深圳:150人左右,开发事,电商,物流,仓储。
- 非深户 2档 , 1万技术的10%公积金,合同主题 深圳艾维普公司,9-6点下半年
小鹏汽车-1面:
- 没问啥技术、
- 基本上问你对项目的了解?
- 部门的一些职责,规约,比较一些技术难点,和技术方案。
小鹏汽车-2面:
- 和一面问的差不多,简单问了几个技术点,和算法设计
- 什么是BitMap的假阳性?
- 通用的导入导出方案是怎么玩的?
- 有哪些不错的方案设计?对产品的熟悉度?
- 怎么划分迭代的?未来的规划?
- 平时怎么学习?
- 在技术方面有什么优势?
小鹏汽车HR-3面:
- 为啥离职?
- 上一家公司为啥要回深圳?
- 个人兴趣爱好等?
- 个人学习情况等?
- 讲解公司的待遇情况:
- 做小鹏飞行汽车的业务,小鹏汽车一样的薪酬结构,就是业务有点区别
- 去年融资了5亿美元
\
欢聚集团-1面:
- Java基础?
- Lua脚本使用固定窗口限流的算法?
- 令牌桶算法,漏桶算法,滑动窗口算法?
- @Transiational事务注解的实现?
- JVM垃圾回收机制,线上排查经验?
- 系统复杂度情况,有无异常应对场景?
- 分布式ID生成方案,但对雪花算法的时间回拨问题没有解决方案
。。。缺少电商,物流,等复杂系统的开发经验。面试的供应链部门
欢聚ShopLine-1面:
- 没有自我介绍,直接先介绍项目?(感觉面试官一天面了很多人,部门专场面试)
- 项目里面怎么保证数据的一致性?
- 怎么保证订单消费的幂等性?
- Redis里用BitMap做订单存储,可以修改吗?
- 怎么保证Redis里面的数据和MySQL里面的一致性?
- 利用每晚定时任务去维护BitMap里Order信息的完整性,如果在维护之前就有操作怎么办?
- 如果Redis挂了,还会不会去重新维护一个BitMap结构?
- Redis+Lua脚本限流是怎么实现的?为啥要用这个实现? (固定窗口算法)
- Excel数据导入导出工具优化怎么实现的?
- 兑换码是怎么生成的? (海明码,增加逻辑校验,减少无效请求)
- 项目里面还有用到什么技术难点?
- 为什么采用双写的数据迁移?不用Canal去监控BinLog日志去迁移?
- 如果双写时,遇到有老数据的修改你们是怎么解决的?
- 新老库双写时,有没有遇到事务问题?
- 会记录错误日志,存储在哪里?
- 还有什么想问的吗?
。。。。基本上抓着项目上,和简历上的东西问,所以对简历上写的东西一定要准备好。
部门专场招聘,感觉面试官一天面了不少人,自我介绍,客套话都省略了。
欢聚ShopeLine-2面:
1.自我介绍
2.介绍项目,
3.分析系统的分层,架构、
4.系统之间是怎么调用的?
5.你们系统之间的边界
6.为啥要把B端C端的流量放一个系统上?有什么好办法把它区分开?
7.如果分开部署,那怎么保证系统的公共业务是通用的呢?
8.为啥不建议一个应用挂两个数据源?
10.什么是中台?什么是平台?
基本没问技术八卦文,就是讨论系统设计的知识,相互讨论,相互互怼,有时候我反问他,问他们是怎么做的,他说他们也不是这样干的,只是为了讨论而已。。。。MMP。
\
网易OA-1面:
- 线程池配置的参数?(CPU密集,IO密集,不同配置)
- 线程池内部创建线程的原理,以及引发OOM问题?
- G1的垃圾回收的特征? 用的什么回收算法? (复制,说成了标记整理,答错了)
- Map为啥要用红黑二叉树的特征?
- Spring框架中有用了哪些设计模式?用在哪个地方?
- 怎么解决Bean的循环依赖问题的?
- AOP切面的底层实现原理?
- 在一个Bean内调用添加事务的方法,事务是否会生效?
- Redis有哪些数据类型?
- Redis有哪几种日志持久化方式?
- Redis底层有哪些数据结构?
- SortSet底层什么时候是压缩列表,什么时候用跳表?
- 什么是跳表?数据结构是怎么样的?
- Redis有哪些集群模式?
- Redis的分布式锁是怎么实现的?
- 还有哪些分布式锁实现的方式?
- ZK的高可用机制是怎么保证的? (paxos算法?不知道)
- ZK实现分布式锁是怎么实现的?
- SpringCloud中的Eureka是多点集群的吗?
- 内部高可用的机制是怎么实现的? (不知道)
- 如果Eureka挂了,客户端之间还能调用吗?
- Nginx有哪些负载均衡算法? (随机,轮询,Hash,权重)
- 如果请求采用Hash算法?但是后面新添加了节点,怎么解决扩容问题? (转移到 一致性Hash算法上?)
- 一致性Hash算法是怎么实现的?
- 你用项目里面用了哪些设计模式?怎么用的?
- 单例模式有哪几种?
- 怎么解决并发时的单例情况?(双重锁?序列化反序列对象创建bean)
- 项目中是怎么用工厂模式去做对三方请求的? (我描述的可能不太清楚)
- Kafka了解吗? (不太了解)
- 和传统MQ的区别?
- Borken,Topic,Patiion..(分区) 之间的关系?
- 一个Topic是单节点还是多节点的? 忘了,不了解 。。
- 慢SQL怎么排查? (Explian)
- Like 会使用索引吗?
- 等于号两边使用函数,会用索引吗?
。。。。挂了。。。
\
唯品会-1面:
- 自我介绍,讲讲项目?
- Redis存一些什么?
- Redis做分布式锁遇到过哪些坑? (死锁,锁占用?)
- Redis缓存失效,有大量请求怼在MySQL上有什么问题? (其实就是缓存雪崩的场景)
- Redis的RDB文件过大,怎么解决?
- Redis分布式集群最大支持多少实例?
- Redis主节点挂了,如何快速恢复?
- 影响Redis恢复速度的情况可能有哪些?
- MySQL什么时候会使用间隙锁?
- 你们的表最大数据量有多少? (4000W+)
- 你们大表做了哪些优化? (索引,业务上表分层,ShardJdbc分库分表)
- 分库分表情况下有哪些汇总计算的方式?(异步汇总缓存,查询内存汇总,Hive和MapReduce)
- 新应用上线,JVM参数模板怎么配置?(默认模板,压测,GC日志,堆占用,调节)
- JVM频繁发生YGC和FullGC,你怎么去定位问题和解决? (GC日志,动态规划,担保机制)
- 你们用了有大数据的Hadoop,Hive这些东西吗? (说没有用到,但自己学过,就没下文了)
- 问到这里没了,有什么想问的嘛?
反问面试官:
Redis你们遇到过节点挂了的情况吗? 你们怎么快速恢复的? (结果就TM的主从切换,他们数据迁移的时候有考虑过)
前端后端大数据都要会点?(且大量操作Redis)
唯品会-2面:
(面试时录音了,所以把每一个问题都记录了下来。面了50分钟左右)
- 介绍一下自己项目?(数据走向分析)你们的系统分层?为什么要这么分层?
- 你了解什么是DDD驱动领域模型吗? 了解DDD有哪几种模型?(充血,贫血)
- 为什么要在系统中用MQ? (解耦,异步,削峰)讲讲MQ中的解耦,和异步有什么区别?
- 下单的时候扣库存有什么问题? 下完单后扣减库存又有什么问题?
- 下单同步扣减库存和下单异步扣减库存有什么区别?会出现什么问题?
- 怎么解决库存多卖问题吗? (分布式锁,Redis原子Incr命令)
- 分布式锁保证扣库存,会存在什么问题? (串行,效率低)
- Redis扣减库存后怎么最终会持久化到MySQL中? (相等与缓存一致性的解决方案)
\
- RocketMQ的技术架构你了解过吗? (下面几个直接说不了解)
- RocketMQ的Topic是怎么管理的?
- RocketMQ的服务器(节点)是怎么管理的?)
- RocketMQ的日志文件是怎么管理的?
- RocketMQ的推拉模式是怎么实现的?
- RocketMQ支持什么样的事务?
\
- RocketMQ发消息存在哪些不可靠的点?
- MQ发送失败怎么 办?
- 本地消息表记录发送状态,那么如果这个状态如果没有修改成功,那么判断是否发送成功的点哪?他有没有发送成功的可能性?
- 发送的消息有个唯一标识,唯一标识是选择自己生成的还是用MQ系统的生成的?
- 如果第一次发送成功了,第二次又发了,在MQ服务端收到两条相同消息,MQ会怎么处理?
- RocketMQ是从哪些方面解决性能问题的?
- RocketMQ是在哪一块用的零拷贝?
- MQ客户端什么情况下需要做幂等?
- 消费者端做幂等的话,需不需要做Try/Catch ?
- 你们会用MQ的重试功能嘛?
- MQ如果没有消费成功会重复消费吗?
\
- Redis底层有哪几种数据结构?(跳表,压缩列表,SDS,数组)
- Redis除了上面这些还有什么数据结构吗? (BitMap? RedisObject可自定义类型?)
- SDS为什么交动态字符串? 那SDS会动态换吗?
- Hash和List底层数据结构是哪几种? 怎么选择的?
\
- Redis集群之间的通信协议原理你知道吗? (二进制Gossip)
- 为什么Redis官方说建议最多1000台部署?
- Redis的热Key怎么解决?
(我说没理解啥是热Key,他问的意思是高频使用的Key,有可能在集群中有部分节点出现了CPU飙高的问题,你怎么去解决怎么去查? 我从 数据倾斜,BigKey两方面去定位分析 )
- 为啥大Key会打满CPU? (fork持久化线程时,和遍历时间复杂度 去分析的)
- Redis的布隆过滤器去重的范围是多大? (没有固定,需要根据BitMap长度和hash函数个数去分析)
- HIVE本身的原理是什么?他是怎么工作的? (HDFS,MySQL存元数据,底层MapReduce)
- Hive和MapReduce有什么关系? (底层计算是用的MR)
- 什么是Map什么是Reduce?
- MapReduce会存在数据亲些的问题吗? 怎么解决? (不知道)
\
- CopyOnWriteArrayList 什么情况下使用它会合适?
- Synchronized 和 volatile 有什么区别? 也可以讲讲底层实现怎么实现的?
- 单处理器(单核)存在并发问题吗?
反问面试官:
你们做什么业务的?运营中台,MPD,活动提报系统 图文系统,用户画像系统,超微系统? 反正他们组是和用户相关的,面试官是做超微系统的,进去之后也不一定是做超微系统。
你们Redis有多少实例? (300台,大促下会有600台 )
唯品会-3面:
(录音了,所以问题记录的比较多,面了1个小时多点。)
- 为什么想离职?
- 你在项目组里面是什么角色?
- 重点讲一下系统中遇到了些什么问题?有什么难点?用了什么方案去解决的? (BitMap去重,海明码)
- 你的项目质量是怎么保证的? (我从三个维度分析:代码质量,系统稳定质量,数据准确性质量)
- 讲一下你们怎么做CodeReview的?
(从两个维度去分析:
方案设计维度上: 体现API接口,和表设计和字段选型;
代码维度上:需要从时间,空间复杂度,池化配置,SQL效率,工具选型,代码可读性上去Review)
- 开发完后你们的单元测试怎么做的? (没做,不了解)
- 项目开发完后发版,你们怎么保证系统的稳定? (灰度,回滚机制,DDL语句)
- 你们用Redis除了做布隆过滤器还做了啥? (延时队列,固定窗口限流,缓存)
- 讲一下Redis的Hash底层实现是怎么样的?
(我讲了 压缩列表,跳表 的特征,以及内部怎么抉择的使用哪种数据结构的)
- Redis或DB的连接池怎么选择去配置的? (我从两方面:Java客户端业务场景,DB服务端的瓶颈)
- 本地缓存有用吗? (反问是不是说的是Ecache那种缓存?)
- 堆内和堆外的缓存有什么不一样?
- 堆外和堆内内存是否对GC有影响?
- Linux的内核有没有研究过? 有没有做Linux内核方面的调优? (没有)
- 你一般怎么去分析GC日志的? (jstact -gc 1000 1000 )
- JVM参数中的GC参数你怎么配的?有什么依据? (从GC间隔时间,存活率,GC时长去分析)
\
- 你怎么设计一个秒杀系统? (从 持久层,交互,系统稳定性三方面去考虑)
- 在秒杀系统中 你用Redis是做持久层还是缓存?
- 怎么把Redis上的库存信息同步到MySQL?
- 如果你服务发版,把过期时间为15天的缓存给删了,你怎么把缓存恢复到Redis?(有点像预热的场景)
- Redis节点挂了怎么恢复?
- Redis主节点为什么不能开启持久化方式?
(主从快速恢复,fork拷贝内存耗时,利用丛丛去级联同步日志)
- Redis主不开启持久化,从开启持久化机制,如果主节点挂了从当选为新的主节点来使用,此时从是配置了持久化的,那岂不是性能有影响? (没办法,异常情况只能快速恢复)
- 怎么监控系统? (我从三方面回答,系统日志层面,服务器实例监控,分布式链路监控)
\
- 问我对新公司的期盼? (对技术有追求,有学习成长)
- 问我们现在公司上班的情况,加不加班(我说七八点下班,2周一个迭代的那种)
- 你了解那些互联网电商公司的加班情况吗?
介绍他们组,做的是VIP用户下的交易系统,QPS上万,几十万的那种,要实时响应变化,经常需要发版。
所以需求多,加班多,一般是晚上10点左右才能下班,项目比较具有挑战性。
项目紧偶尔也会周六加班,面试官意思是如果能力好做的快,9点干完了,为了考虑整体团队情况也得10点下班的那种。比我现在的工作强度大很多,但是互联网电商项目比较具有挑战性,适合我们这种小年轻。
反问面试官:
你们Redis的主节点开启了了持久化机制吗?(不开启)
你们Redis的节点能到多少QPS?
(比我说的理论值10万QPS远远要小,只有6万左右的,让我感兴趣自己去试试。)
记不太清楚的公司:
SHEIN,金蝶信科,明源云,中国平安,万物云 ,用友,亚信
\
这几个公司, 都不考算法,难度中等偏下,基本上都是八股文+开发经验的问题。
- JUC的并发包下的Automic类,已经底层的实现
- CAS问题
- 多线程下实现代码的顺序执行
- List 的两种线程安全模式?
- HashMap的Put过程,以及扩容过程
- Mybatis的插件式编程
- MySQL的Join过程,
- 如何设计5000千万个用户发放6位数(字母+数字)的兑换码?
- Redis 什么时候用Set,List
- 缓存一致性?
- 数据一致性?
- 分库分表?
- 分布式锁等?
- 自增主键等?
- CodeReview等等
- 线程池原理等?
- Bean的生命周期等,
- IOC,AOP底层实现等。
- MQ保证消息不丢失,保证幂等性,保证可靠性消息投递,保证消费顺序问题等等。
- 基本上,redoLog, undoLog, MySQL常见的优化,B+数据结构,索引优化,回表,聚簇索引,线程池,以及配置池子的时候需要注意的问题
感谢阅读,更多的java课程学习路线,笔记,面试等架构资料,需要的同学可以私信我(面试)即可免费获取!