阿里 面试那些二三事
面试的那些二三事
技术面试
自我介绍
个人经历背景、经历过什么大起大落 做过什么有挑战的事情 每家公司自己的成长和挑战是?
项目:
项目怎么讲清楚? 面向的用户和客户是谁?体量有多少? 业务流程是什么样的? 有哪些模块? 用到了什么样的技术? 每种技术是如何选型的?为什么是这样的一个技术架构?架构有没有哪里不好的?
业务痛点和客户价值&衡量指标
衡量做的好坏的数字指标是?
角色:
项目负责人,1人负责整体工程端工作,架构设计 项目管理?
架构:
模块+模型+表结构+挑战+结果;
依赖了什么?对外输出了什么? 沉淀了什么?
都有哪些模块?相互之间的关联关系是什么? 各模块的解决的问题是? 为什么要这么设计? 为什么要这些表? 为什么要分库分表?
技术亮点&擅长的技术
挑战&难点&怎么解决的?
达成目标 业务和产品策略是什么?运营节奏是?
在技术选型上有没有其他的对比?为什么选择这个方案?
做这个项目,你最大的收获是什么?你觉得哪些地方可以改进?再来一次会怎么做
学到了什么?
团队定位
- 整体的产品&技术架构是什么? 你们团队在里面的定位是?背的核心kpi是?
- 团队组织架构? 分多少团队 各自负责什么? 你们团队负责什么?你负责什么?你这一趴的定位是什么?
- 跟业务整体目标有什么关联? 你对目标体系做的增量价值是? 有什么创新方案?推动了谁?过程中经历过哪些困难? 怎么克服?
-
业务理解-目标驱动和行业对比意识
- 业务竞对分析:他们是怎么做的? 体量 ? 优劣势?
-
- 使命&愿景&用户价值?
-
- 团队背的核心KPI是?衡量的核心指标是?
-
- 有没有跟业务或者主管不一致的想法? 后面如何处理?如何证明自己? 后期的效果如何?
-
- 你对客户是否有拜访 跟客户有什么联动 自己有没有主动推动过一些事情并落地带来好结果?
- 有没有收到了什么负面反馈? 什么原因?如何改善? 成长是什么?
- 除了开发需求 有没有自己自己主动推动过业务产品发展的事情?
主动性&担当&工作成果&贡献-业务推动能力及其结果
- 主动发起并构建了统一的…平台,并解决了协同实习性等诸多问题问题,引入了规则引擎等技术框架,有非常好的发现问题、解决问题能力,对细节把控也比较好;
- 主动发起了…项目,在模型设计、数据存储、信息加密方面做了比较多的工作, 对业务与技术的理解不错。
技术-深度和视野
基础
- 基础数据结构的实现:linkedList arrayList hashmap treemap
- hashmap 实现? 红黑树特性和原理? 复杂度?
- HashMap在JDK8中如何解决死循环问题?
- HashMap和HashSet关系
- concurrentHashMap实现
-
- 常见的并发模块和类? -
- volatile的作用和原理
- ThreadPoolExecutor用法与关键参数关系?核心参数理解
- 进程间如何通讯,线程间如何通讯? 线程通讯:信号量、信号、锁
- Threadlocal是怎样实现的? 注意些什么?
- sleep()和wait()的区别,
- 进程间通信方式有哪些?各有什么优缺点,挑一两种说下使用场景
-
- synchronize和重入锁的区别:
- aqs 逻辑, 加锁和释放锁
- 重入锁下有几条队列?
- cas理解、产生的问题、怎么解决?哪些类通过版本?
-
- jvm内存结构?
- 栈溢出情况、新生代内存结构及其比例划分&为什么这么设计?
- 垃圾回收器类型和算法?G1 CMS使用场景?-
- jvm常见参数? 常见分析指令? jps jmap jstack zprofile等?- 没怎么做个调优 Integer
-
- 类加载机制 双亲委派 为什么这么设计? 如何打破? Tomcat osgi jdbc如何做的? 其他语言 怎么做的额? node里的npm? -
- 自定义类加载器如何实现?注解的原理?如何实现自定义注解?
- maven jar包 冲突解决方案? spring cloud 怎么做的? 版本代号-
- 如何排查类冲突?如何隔离冲突?如何自定义类加载器
-
- spring aop的理解?用了哪些设计模型?动态代理理解? 有哪些实现方式?jdk cglib asm ?选型对比?
- BeanFactory和ApplicationContext的差异?
- spring 容器启动顺序和流程,扩展点BeanFactoryPostProcessor的加载流程?
- springcontext 管理bean 加载插件 , 没看过
- spring事务传播机制 ?异常处理?
-
- Spring IOC的初始化和生命周期?
- spring的ioc启动流程简述:refresh方法、解析xml文件或注释、BeanDefinition、初始化上下文ApplicationContext
- 相互依赖 死循环问题 - 三级缓存 提前曝光 还没初始化先放到缓存里
-
- springboot 和spring 的区别?何自定义stater、spring.factories实现自动配置,加载所有需要加载的bean?
- bean factory和factory bean的区别 - ok
-
- BIO/NIO/AIO各自特点及对应场景
- NIO的在netty中的封装的模型及底层操作系统epoll的实现; select实现对比?
- 粘包 拆包
-
- DDD的理解? 解决什么问题? 遇到什么问题? 如何建模? 做个 用例分析没? 怎么确定领域边界?问题域的划分?
- 单点登录,cookie,session理解
设计模式
有哪些设计模式?在哪些源码中看到过使用场景?如何设计? 如何实现?
线上问题经验
有没有遇到线上问题?怎么解决的? 有没有其他方案?解决效果如何? 有没有被复用?
- 什么情况会出现 Full GC,什么情况会出现yong GC
- 调优经验? 为什么调整?分析过程是怎样的?调整了哪些参数?效果如何?(老系统 4g 堆空间 768M 当时 Young区比较频繁,dump日志 结合 zprofile 做分析,大量for循环创建对象,后面结合代码优化以及 堆空间升级 )
- 常见的cpu load过高 一般是什么问题。引申出是否用过top,jstat,jstack等 使用过top,jmap、jstack、jstat没有使用过。
- 查看任何进程下线程运行状态?jps
- 如何诊断java线程死锁?jstack;
- while(true){new thread().start();},内存和cpu飙高;
- 诊断死锁?1)看堆栈;2)select;3)java线程状态,死锁blocked;4)cpu占用率很高;
-
数据库
- 数据库引擎及其区别, 主键索引实现方式对比 ? 对于为何B+树比B树更适合做索引?优劣势对比?索引类型 ?
- 隔离级别、幻读理解和解决方案 间隙锁 mvvc的理解-
-
- 读写分离&分库分表 做过没?数据量有多大?分多少可库?基于什么做分库分表-用户id OR 时间 为什么?主键唯一主键id生成方案是?选型对比- shardding tddl mycat? 优劣势是什么?有没有什么限制? 各自核心原理是? -
- 分库分表的主键唯一主键id生成方案?
- 分表之后会遇到哪些问题 ?跨库分页如何解决? 如何实现数据的整体排序?
-
- 常见sql优化方式? 如何做分析?explain的使用和理解 每一列的含义是? 慢sql经验?
-
中间件&分布式:
-
分布式事务哪些实现方式?二阶段&三阶段等的区别和理解
-
-
跟memcache相比 Redis有哪些优缺点?Redis如何实现扩容?如何解决redis热点数据问题?
-
redis集群模式&对比 汰换&失效策略
-
redis的持久化方式?aof和rdb的区别?
-
缓存击穿 雪崩及其解决方案
-
其他 缓存 数据库? 对比? -
-
一致性hash 解决什么问题 、原理 -
-
-
分布式锁实现方式有哪些? 有没有什么可优化的空间?如何减少远程服务调用?
-
分布式系统如何做幂等设计?
-
-
netty的reactor线程模型 select? zero copy , TCP粘包/拆包?
-
-
es和solr & rpc 序列化 & netty mina & mq(kafka rocketmq metaq redis) & orm & 分库分表 & 缓存数据库(redis memcached) &
-
状态机 & 工作流 等中间件 实现有哪些?对比选型?优缺点是?为什么选择这种方式 跟其他的对比是? 背后的原理?遇到什么问题 怎么解决?取舍是什么?业务特点是怎么样的? 有遇到什么什么问题? 怎么解决?各自核心原理是?
-
-
mq底层实现? 乱序&丢失&延时 如何解决?kafka的数据如何存储的? 查询索引如何设计的? 日志索引。
-
rocketMQ的如何保证不丢以及消息是否能够一定被消费
-
-
sentinel 本身的开销、集群限流 、 滑动窗口和令牌桶等实现对比(开销更大 但精准度更高)
-
-
dubbo实现?有哪些模块?各个模块负责什么?选型和对比? 软负载是怎么实现的? -
- RPC的原理是?服务是怎么注册的
- rpc监控、运行容器,底层通信等细节;
- 服务注册技术选型,负载均衡机制、网络传输重失败试机制、网络传输框、客户端代理、服务端服务查找映射调用如何设计计与实现
- 怎么做全链路的追踪?
-
-
zookeeper 节点类型? 集群部署节点角色和各自负责什么? 一致性协议理解?
-
zk的读写过程和作用
-
zk什么时候要选主及选主的逻辑;
-
-
公司自研中间件 相对 开源的 有什么不同?开源上有哪些类似的解决方案? 为什么要自研?能解决什么特殊问题?
源码
看过那些源码? 背后的原理? 设计的如何巧妙? 涉及到什么设计模式? 同类框架是如何做的?
著名开源项目的源码。 dubbo zookeeper redis mybatis spring tomcat netty等 相关源码如果看过最好
项目管理
为什么做这个项目?价值是?痛点是? 带领过多大的 项目 ?涉及多少团队 多少人力 过程中遇到什么阻碍 如何解决?风险应对?成长是?怎么做好项目管理?
团队管理
团队管理 上 有什么经验?如何发挥每个人的潜力? 如何保证成员成长? 如何能做好沉淀?
个人成长&影响力
- 负责统一调度系统等多个产品,有主导中大型系统经验
-
- 公司考核机制?目前级别? 工资情况?绩效情况 是否top? 在OYO2年都是A 优秀员工,在陆金所 第一年是C(后面还有E) 后面几年都是A? 有没有参加过晋升?晋升结果?
- 最近有没有面试过其他公司?进展如何?给到的薪资层级如何?上家公司薪资多少?期望薪资多少
-
- 在团队内会做个分享没?分享什么内容?
- 团队里有什么特殊贡献没?分享?分享什么?内推 内推几人? 专利?价值是?影响力如何
-
- 自己有很棒的开源项目
- 个人博客 有没有?
- 一周的工作任务是什么? 项目架构设计?一天写代码的时长有多少
- 业余时间在干什么(抽时间学一些课程、领域知识/)
- 成长经历是怎么样的? 每一年 半年 自己有哪些成长? 经历了什么?
-
- STAR模型,T和A,你做了什么样的Task,用了什么Action,取得什么结果,就是TAR。特别关注S,Situation,你在什么条件下做什么事情 (你这个部门多少人,跟你合作的上下游,上下左右都要看,你跟谁合作,汇报给谁,你下一个是谁,哪些活是你独立干的,独立干的时候起点是什)
### 学习习惯
-
学习方式?学习来源?github 技术群 公众号(具体哪些)
-
-
最近学习那些技术?接触了哪些新技术? 新技术 jdk9 10 新特性 ;云原生;servless理解;
-
每天花多少时间学习?
-
是否参与 过开源项目?影响如何?
-
-
最近看的一些书? 技术上的书籍- 阿里高可用架构、paper、github ? 项目管理? 软技能? 创新? 产品?
-
-
写技术文档,公众号,jdk源码、高并发、spring;我的IT技术路
-
分享 举行多次code review , 怎么阅读源码
-
-
infoq参加过一次;
-
想法:希望得到多方的反馈以提升技术能力,关注行业内技术大牛
个人规划:
- 3-5年的规划是什么?–短期想接触更多有挑战的项目成为资深工程师,进一步提升知识深度,长期成为架构师。
在线笔试
评估面后的1到2天左右,注意代码规范 和 答题思路 , 写点注释 ,代码整洁, 主要是 并发基础+设计模式+基本的数据结构和算法题(、排序算法、二叉树、红黑树、平衡树 等) [常见笔试题-自己也多在网上找找资料]
给定一个字符串,输出不含有重复字符的最长子串的长度。
输出杨辉三角,10行即可
例如:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
两个线程A,B按序输出 0-100之间的元素,线程A只负责输出质数,线程B负责输出其他元素。
a线程质数 1
a线程质数 2
a线程质数 3
b线程元素 4
a线程质数 5
单例的实现(懒汉 和 饿汉) 工厂模式 策略模式 模板模式等的实现
##### 共计9个苹果,有2只猴子,一个猴子每次拿2个苹果,一个猴子每次拿3个苹果,如果剩余的苹果不够猴子每次拿的数量,则2只猴子停止拿苹果,请用java多线程模拟上面的描述并打印出过程
个人特质&潜力&稳定性面试:
面试岗位的理解?
可以了解了解我们做什么,自己也可以在网上找找相关资料。
面向的用户是谁?给用户带来了什么价值?商业模式是什么?是否看好?为什么?竞对是?优劣势?
本科-大学在哪里读的?
大学期间:参加SAP公司的举办的比赛:项目使用机器学习算法,预估二手车价格。前后端开发。获得一等奖(一等5个,还有1个特等将)。
大学2次获得人民奖学金,成绩前20%。
当了三年的班长,比较看重学习,倡导学习氛围,整个班三十几人,考研考了二十几个211 985。
获奖的情况
大学和公司期间 参加过什么比赛?是否获奖?
虽然是刚毕业三个月自己争取带项目,年度协作奖评选获得这个奖项。
为什么来杭州&离职原因
各个公司离职的原因?怎么积极回答好
家是上饶的,小孩刚出生。全家都过来,老婆目前全职带娃,支持来杭州。
加入阿里的诉求是?
其他考核点
- 过往历史的环境中有哪些东西是自己主动变的,有哪些东西是被动变的。主动变,怎么抓住主动变革的机会以及变革的成功的概率,结果怎么样?
- 当你跟你上司意见不一致你怎么处理?
- 哪些事情是别人都不赞成你做成了的
- 这个事情你在做的过程中,你最失望最灰心的是什么时候
- 你自己觉得最骄傲和自豪的事情是什么? 为什么?
其他
面试流程:
简历评估面 1面+笔试 2面 3面(包括HR面) 如果想快点面试,可以主动和面试官反馈 可加速流程
面试要心得体会
- 简历上的技术点 : 所有写上去的都可能被问到 一定要准备好 如果不熟悉 尽量不要写进去
- 可以投一些小公司面试面试 锻炼下自己, 准备好了之后在面试阿里,如果面试挂了会被记录在档,半年后才有机会在下一次面试
- 回答问题前先听清楚问题 如果没听清楚可以跟面试官确认 然后结构化 简要回答 要有重心 别太扯一些无关的
-
- 阿里面试的关键不只是技术基础,还有 个人潜力、思考等,不能只看技术
#### 面试的一些经验分享 可主动在网上搜索下其他人的面试经验
- 干货 | 和Java程序员谈一谈阿里的面试心得 https://mp.weixin.qq.com/s/0DHCEFEzOlVvAV7U0OCpLg
- 2019年阿里技术面试题集锦(28道含答案) https://mp.weixin.qq.com/s/cZLpwNINT0GjSYKNC2grjA
- 一位阿里P7的面试题经验分享,希望能帮助到你 https://www.lmlphp.com/user/10804/article/item/424127/
- 阿里 P8 大牛的建议,工作 1-5 年的 Java 工程师如何让自己变得更值钱 https://xie.infoq.cn/article/ef604e55de0cd55bf3e970ca0
- 手握美团offer,结果背调红灯,哭了,网友:别小瞧背调公司 https://maimai.cn/article/detail?fid=1487089506&efid=F-S446BZaNjJFPqEeYLhGA&use_rn=1
最后
如果 有职业困惑、职业挑战不知如何解决、遇到瓶颈想换个工作的同学 加我个人微信:yaogao000, 备注:招聘_姓名
可扫码加微信,如果有好的朋友 也麻烦帮忙推荐推荐