科大讯飞社招Java一面&二面
一面
社招,5年工作经验,面完之后问了下招聘要求,是要招小leader技术经理的岗位,除了技术要求外,还得有些方法论,理论知识。需要带人做项目,面完盘算了下,对应阿里应该P7级别了,我的水平也就是个P6吧,还在国企工作了快一年,水平下降的厉害。下面是面试记录的问题:
- 自我介绍
- 国企的项目直接忽略,第二份工作经历是阿里,项目从0到1建设到百万QPS流量,你在这里承担什么角色(owner)
- 项目的技术架构,业务架构描述一下吧(准备了语雀文档,开屏幕共享讲)
- 这个是HSF那块项目吗(阿里内部RPC框架),上面有没有封装一层调用的平台(RPC转HTTP平台)
- 数据存储层,MySQL、Redis、ES分别存了什么东西(空间属性数据、标签属性数据)
- ES的性能不太好,200多万条数据,为什么搜索效率不高,为什么慢,分析过原因没(这块没回答好)
- 数据放到机器内存里,多台服务器,有台服务器DOWN了,数据就没了是吧(重启会重新加载数据到内存)
- 一个数据中心还是多个数据中心,问的是异地多活(基建已经做好了,双机房)
- 双机房数据怎么同步的?(内部中间件,手动创建任务,两边机房都推数)
- Redis的线程模型有了解过吗?单线程为什么效率高
- 有用过NIO的框架吗?
- 百万QPS,怎么维护客户端的连接,这块怎么做的,传统的HTTP节点无法保证吧?(这里应该是想问IO相关的,答的单机3000-4000QPS,有200多台机器)
- 百万QPS里面有没有做一些性能优化的工作,用到NIO,系统优化,nginx参数优化等,细节的工作?(服务发布抖动JIT问题优化,小流量预热)
- 解决过Redis集群大key,热点key问题,怎么解决的?(热点key冗余存储,大key按业务拆分)
- 热点key、大key带来什么问题?(请求打到单节点,性能瓶颈)
- 事务了解过吗?MySQL的事务
- 事务的隔离级别,简单讲一下
- CAP原理,3选2,Redis集群遵循的是哪两者?CAP理论简单讲一下(一致性、可用性、分区容错性),不同的分布式系统选择CAP时,怎么选,比如Redis cluster注重哪两者(八股没背到,直接说不了解。。。)
- 缓存一致性协议有了解过吗?不是MySQL和Redis的那个,是如何保证我的缓存中使用的共享变量的副本是一致的?也不是JMM,很多技术原理都涉及到这一块,就是一种技术理念
- Java的synchronized和volatile两个关键字,讲下实现原理,和能做什么?
- synchronized和Lock有什么区别?
- Java里的重量级锁、偏向锁,锁升级、锁优化的过程,这个了解吗,jdk1.8之后对synchronized进行了优化,有哪些锁优化(适应性自旋、锁消除、锁粗化、轻量级锁、偏向锁)
- MySQL有没有一些性能优化的经验,SQL优化的经验说说(回表、覆盖索引,其他忘了)
- 最后一个问题,现网服务很卡,你一般怎么排查(这里只讲了排查过程,其实是想听到一些方法论的东西)
- 怎么定位卡的问题呢?没有听到一些方法论的东西,有可能是硬件的问题,网络问题,程序问题,程序报OOM了
- OOM的问题怎么去定位和解决
- 为什么从北京回武汉了,现在又要回来?一般到年纪了都是回老家,你怎么相反了?
- 平时有什么兴趣爱好,除了技术爱好
- 反问:业务是做什么,这边都是做项目的,不像你之前都是做产品的,
- 面试流程有多长?共三面,第二面不考技术细节,考察一些思维,做项目的;
二面
- 自我介绍。。。
- 聊阿里地图项目,团队多大,多少人?(整体聊下来,)
- 地图项目是刚开始做吗,应该之前已经做了很久了吧
- 你这个小组的职责是什么,成立的目的是什么
- 关于RGC项目,把响应时间从100ms优化到20ms,是从哪方面优化的?(又开屏幕共享说了下)
- Geohash怎么判定你搜索的范围,搜索逻辑流程就简单说下(说了Geohash的编码和搜索原理)
- 你在项目里是后端研发,主要工作内容有哪些(架构设计、开发、和算法沟通需求、建设排障工具)
- 你在阿里遇到的挑战和问题有哪些?(想看团队合作有没有吧,事前、事中、事后)
- 你们团队6个人,都是负责哪些事情,你们的算法都是负责什么事情?
- 项目过程中有没有关于数据库优化的工作?(B端项目,短期给数据升配,长期修改服务架构)
- 你是怎么定位到数据库性能瓶颈问题的?(监控分析)
- 之前有做过团队管理的经验
- 这几年工作过程中,有没有遇到项目没有按期完成、或者最终效果不及预期的
- 有过跟团队内部协作,或者和客户沟通的经验?
- 当时从北京阿里去武汉的原因是什么?(没想好。。。)
- 技术栈涉及到分布式锁,RPC框架,怎么用的?
- RPC框架了解多少?
- 发现服务变慢了,怎么判断性能瓶颈在哪里?(综合考虑,硬件、网络、程序)
- 一般除了监控工具,还用过哪些分析工具(Arthas,MAP,JVM命令,可以多了解一点)
- 反问:需要带人?