深圳航天工业技术研究院Java社招开发工程师(二面)
大公司和小公司的面试有什么区别呢?
大公司,知名的BTA、谷歌、微软、甲骨文、一些国企……面试往往是基于应聘人员的简历亮点技术栈的深究“聊天”,作为应聘者一定要重视简历的实事求是,一般不会有什么难堪、语塞上的尴尬。。。。
小公司,一般是一些外包、初创或者一些传统行业的半转型后的小部门业务……面试对于应聘人员的简历走马观花,往往会以“以己所长克彼之短”,完全不会依据应聘者简历中罗列出来的技术栈来聊,面试官往往以自己了解的一些来随心所欲地提问应聘者,计算机开发、计算机网络行业的知识如同***大海,你知道的别人不一定知道,反过来别人知道的你也不一定知道……这就叫“术业有专攻”。
如果应聘者和人家面试官的技术栈不同,那面试官就说应聘者技术“太菜”……(见过好多小公司的面试官是来找技术栈的“连连看”来的,求同不存异)
资深的面试官会以“四两拨千斤”的面试技巧,几个知识点就能面出应聘者的大概“经验水平,工作中应变能力”……
简历项目技术栈中写了基于Elasticsearch作为底层数据框架提供大数据量的实时统计查询的方案设计,所以面试官就开始深究ES的“闲聊”。。。
- 谈谈分布式搜索引擎的架构设计----------个人觉得计算机相关的软件开发一旦谈到设计、原理,并不是单纯的“背概念术语”,我对背诵从上学时就不感兴趣,尤其是理科类的。ES的属于概念术语也就是什么文档、元数据、索引……应该从它的设计源码上、设计用途、以及应用场景上聊,ES写数据、读数据、搜索数据是如何设计的……
- 分布式搜索引擎服务于大数据量(百万上亿级)的优化查询功能是如何的?-----保证内存filesystem ***足够大……ES+hbase架构……内存有限但数据量太大的情况下尽量把查找频繁的放入内存中,其他的放入hbase或者mysql中。元数据文档设计和分页上的优化……
- Elasticsearch使用的索引与关系型数据库的索引异同和效率,为什么另一个索引机制更快?-------其实就是ES使用的倒排索引和关系型数据库使用的B-Tree索引做个对比(实际上我没有手撕红黑树、B树的相关经验,仅仅停留在数据结构的皮毛阶段),大致地说了下树的高度logN复杂度,提高了逐个查询的慢效率,相当于逐个查询换成了区间查询。倒排索引查询就是根据文档内容查询文档
- 生产环境中如何部署ES的?-----这一点除了技术上的问题,更重要的是考察了工作经验,生产环境里具体是怎么做的。物理机的部署数量,创建了多少个索引?每个索引的数据量?每个索引的分片?……
- 在项目中的缓存,以及使用缓存的目的。--------常见的电商项目中用过的DAO框架,MyBatis中配置开启了缓存,可以提高性能,对于频率比较高的操作通过缓存可以提高性能。
- 缓存使用有什么不良的后果--------缓存和数据库不一致,缓存雪崩穿透并发等
- redis和mem***d的区别。-------听面试官聊天的过程了解一点,redis操作数据和集群模式的不同,说实话我不了解mem***d……
- 单线程的redis和多线程的mem***d效率对比-------
- redis的线程模型---------实际就是客户端请求通过redis发生一系列过程,从客户端请求(连接、读写)操作会产生对应的不同“关联应答器”(连接处理器、请求处理器、回复处理器),关联应答器将对应的数据准备好写入socket中,供客户端取用。……socket编程模型的了解
- redis属于单线程为什么效率高?-------redis是内存存储,内部采用非阻塞IO多路复用,单线程避免上下文切换
- redis哪些数据类型,分别应用的场景-----String(基本的set/get)、hash(存储对象)、list(有序列表)、set(无序自动去重)、sortedset(排序去重)……
- redis过期策略---------------由于redis本身是基于内存存储的策略,所以空间非常有限,对于一些热数据和冷数据要分别对待,当然是存储一些热数据到redis中,冷数据要定时清理腾位置,这就是过期清除。定期删除、惰性删除和内存淘汰机制……
- 如何保证redis的高并发和高可用-----还得结合生产开发中的场景来表达, 高并发就是面对百万级以上的客户请求,高可用就是一个redis挂掉了不影响客户端的使用(master持久化机制作备份……)。
- redis主从复制原理和哨兵原理------ 启动一个从节点会给主节点发送一个命令,如果是第一次连接主节点会触发全复制命令,如果非第一次会触发复制部分数据。一个RDB文件快照承接着主从复制的桥梁。哨兵原理就是应用在集群中master节点宕机而能够将故障在后台中转移并将故障通知给维护人员,起到监控主从正常工作的作用。master宕机能够立即***出另一个来充当master(两个节点就不成立了)
- 在主从复制和哨兵机制的场景下,如果master正在给其他从机复制数据时突然宕机,而哨兵机制***一个新的master,新的master和其他从机一样还没有完全接受到老master要复制的数据造成的丢书数据问题。-------
- 同上机制,如果某个master由于通讯网络问题暂时失联,哨兵机制判断为宕机,则重新***一个新的master,当网络恢复后出现脑裂导致的数据丢失。-------------
- redis持久化的方式,优缺点、实现。--------主要是RDB(间隔一定的时间生产成redis内存中的数据一份快照)和AOF机制
- 单机redis在海量数据面前的瓶颈原理,如何突破这一瓶颈?--------
- redis集群架构,横向扩容master,redis cluster机制相关------
- 聊聊节点间的通信机制原理-----gossip协议……
- redis的雪崩和穿透,如何解决?-------
- 如何保证缓存和数据库保持一致性--------
- redis并发竞争问题解决方案----实际就是多个用户对缓存中同一个数据操作顺序出现的紊乱。分布式锁……来解决。
- 你们公司生产环境redis部署集群架构谈一下----------主存架构的机器部署,节点读写高峰流量请求,……