面经手册 · 开篇《面试官都问我啥》
作者:小傅哥
沉淀、分享、成长,让自己和他人都能有所收获!😄
一、前言
一直以来都有小伙伴问我什么时候出一些面试系列的文章,脑袋一热一口答应下来,《重学Java设计模式》写完就安排。但是怎么写,要写成什么样才对读者有帮助成了难点。
再三思考,面试只是一时的,工作、学习,才是长久坚持的。很多人面试不理想多半也是来自于自我学习能力的不足和工作内容的单一以及业务体量小导致。所以我想从全局培养人才的角度出发,也算是技术成长的经历中提取学习框架,帮助小伙伴们提升技术能力的同时也可以应对面试。
招聘一个合格的研发有多难?近半年我差不多收了400份简历,筛选简历到初面通过的不足10%。这里面很多人连简历都写不好,面试时也经常回答不到点上,技术栈广度不够深度不足,项目经验缺乏,没有解决复杂场景的经验等等。但也同样有很多优秀的,手里有多个offer最后流失。对于企业是损失,但对于个人来说,我佩服这样的人,他们技术好有更多的选择。
有时候不是面试难,而是年龄与能力不匹配,对企业招聘来说,同样能力下你价格还高,为什么不招聘个年轻有活力的呢?() 有时候你会说这是贩卖焦虑,这是洗脑,但这条路上终究有人前进,有人被动回退。
手里有个 ,不要想着去怼别人的 ,因为还有你不知道的 。保持空瓶心态从开始才能学到。
这一篇我会从简历的视角出发,简要概况出研发人员应该具备的能力 有了这篇的基础上,后续在逐步扩展系列的面试场景,以及对应的面试题细节讲解和从哪学习这些知识的一个引导。
二、程序员的愿望
5年,时间不长不短,有人结婚生娃、有人回家开店、也有人继续在大城市打拼。
头两天在研发群里做了一次愿望留言,期待下5年后的自己。如图;

留言心愿集中的点,在于;
努力!也照顾好自己。奋斗!也爱惜好身体。
三、谢飞机简历
这是一份工作4年的谢飞机简历,如下;
先看看简历,与自己的对比下,有什么可取之处
如果你是求职者,还希望在这份简历里补充什么
如果你是面试官,你举得这份简历还差了什么

这一份开篇的简历,可以阅读完下面的面试框架进行比对,看看你应该做些什么 。
后续的系列面经文章,将围绕简历开始,提问和讲解面试题。
四、面试框架

1. 自我介绍
例如:
面试官好,我叫谢飞机,16年毕业于天津工业大学,软件工程专业,目前已工作4年。我从毕业后就职于途乐数字科技,负责营销和订单系统开发。在系统搭建、代码优化、问题处理上有较丰富的经验和处理能力。同时也喜欢写一些技术博客和看一些技术书籍,另外在Spring、Dubbo等源码学习上有过一些研究以及复用到业务开发中。感谢!
2. 面试类型
依赖于面试官的不同,与你一起进入面试的方式也不同,比如;
直接提问型 需要你有一定的技术栈广度和深度,问题往往也比较有跳跃性。但大部分题目会是热点问题,但可能不是日常开发中频率最高的技术点。
场景引导型 需要你有一定的开发架构经验和项目落地能力,这部分问题基本都会结合实际的业务场景进行提问,每一个场景就是一个复杂问题问题的解决能力。这里问到的场景会与你简历中的工作经历和项目相关,但复杂程度可能会超过你目前简历中的项目内容。比如;你写了一个订单类的,那么会问你秒杀的实际解决方案。这样的问题很难背题应付,需要真的经历过,研究过。
连环追问型 从一个小的技术点开始,一层层往下剥,每一次的回答也几乎都是下一个问题的深入点的来源。这种问题不仅考察面试者,也是对面试官的考验。往往在招聘高级别开发时会进行定向深入挖掘提问,找到匹配的行业专家级技术人员。
压力逼问型 这种面试方式一般不多,但可能有的高级面试官会让你感受到这种气场。一方面是确实人家有这样的技术气势,另外一个是来自自己的紧张。如果会不是问题,还会在面试官那留下很高的打分。如果不会,那么会感觉到你越不会什么,面试官越问你什么。
3. 算法
算法一整块内容来考的互联网公司目前有一些,比如;头条、谷歌、百度,但不一定所有职位都需要去考算法。热频考点大部分可以分如下几块:
在题目上一般会有排序、二分查找、回文链表、反链链表,和数据结构设计方面。这些题目可以通过 leetcode-cn.com 刷题进行练习。
4. 技术栈
技术栈考查的是程序员在编程开发领域学习的广度很深度,日常的业务开发往往提升都是对API使用的熟练程度,如果再缺少一些系统设计和技术难点攻克,或者说没有大流量的冲击。那么确实很难回答一些技术深度问题。如下汇总了基本会再技术栈面试中涉及的考题,可以参考提升个人技术能力。
4.1 技能
4.1.1 Java
###### JDK源码
1. HashMap的数据结构(1.7、1.8的区别)
2. HashMap的实现原理
3. HashMap扩容为什么是2^n-1
4. HashMap是线程安全的吗
5. HashMap、HashTable是什么关系?
1. 讲讲你对ThreadLocal的一些理解
2. ThreadLocal有哪些应用场景
3. 了解过FastThreadLocal吗
1. 是否保证线程安全
2. 底层数据结构
3. 插入和删除是否受元素位置的影响
4. 是否支持快速随机访问
5. 内存空间占用
6. 如何进行扩容的,默认初始化空间是多少
1. 有什么区别
2. 是线程安全的吗
1. lambda表达式
2. Functional Interfaces
3. Optionals
4. Stream 流
5. Parallel-Streams 并行流
###### 并发编程(j.u.c)
1. volatile 的作用和使用场景
2. volatile 如何保证指令重排
3. 什么情况下会发生指令重排
1. 一般用在什么场景
2. 实现原理
3. 锁升级过程(偏向锁、轻量级锁、重量级锁)
4. 这是JVM层面锁,还是JDK层面锁{JVM层面}
5. 这是一种悲观锁还是乐观锁{悲观锁是独占锁}
1. 这是JVM层面锁,还是JDK层面锁{JDK层面}
2. 这是一种悲观锁还是乐观锁
3. 是可重入锁吗
1. 与synchronized相比较有什么不同
2. ReentrantLock 与 Lock 的关系
3. 锁过程中是否可中断,与之对应的synchronized可中断吗
1. Unsafe 类的作用
2. CAS 的理解(compareAndSet)
3. 什么是ABA问题
4. CAS的实现有什么(AtomicInteger)
1. 实现类有哪些
ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier
2. 实现了AQS的锁有哪些
自旋锁、互斥锁、读锁写锁、条件产量、信号量、栅栏都是AQS的衍生物
内存屏障,几乎所有的处理器至少支持一种粗粒度的屏障指令,通常被称为“栅栏(Fence)”
###### 多线程
1. newCachedThreadPool
2. newFixedThreadPool
3. newScheduledThreadPool
4. newSingleThreadExecutor
1. 新建、就绪、运行、阻塞(等待阻塞、同步阻塞、其他阻塞)、死亡
###### JVM
###### 设计模式
单一职责(一个类和方法只做一件事)、里氏替换(多态,子类可扩展父类)、依赖倒置(细节依赖抽象,下层依赖上层)、接口隔离(建立单一接口)、迪米特原则(最少知道,降低耦合)、开闭原则(抽象架构,扩展实现)
这类模式提供创建对象的机制, 能够提升已有代码的灵活性和可复用性。
这类模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
这类模式负责对象间的高效沟通和职责委派。
###### 反射、代理
4.1.2 Redis
###### 命令
###### 架构
###### 应用
4.1.3 Mysql
###### 锁
###### 事务
###### 日志
###### 索引
###### 引擎
4.2 框架
4.2.1 Spring
4.2.2 Mybatis
4.3.3 SpringBoot
4.2.4 SpringCloud
Eureka:服务注册于发现。
Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。
Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。
Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。
Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。
4.3 组件
4.3.1 Dubbo
dubbo://(推荐)
rmi://
hessian://
http://
webservice://
thrift://
memcached://
redis://
rest://
4.3.2 Mq
4.3.3 elasticsearch
4.3.4 Hbase
4.3.5 otter
4.4 工具
4.5 架构
4.5.1 系统搭建
4.5.2 数据库设计
4.5.3 服务治理
4.5.4 分布式任务
4.5.5 监控
4.5.6 压测
4.6 环境
5. 项目
5.1 项目经验
5.2 工作业绩
5.3 技术沉淀
5.4 工程师品质
5.5 疑难问题处理
2 . 紧急事故解决能力
5.6 项目推进
5.7 专业影响力
6. 个人&面试官
6.1 个人
6.2 面试官
五、总结
结合以上框架内容看自己是否是一个能抗住打的求职者,综合素质是否全面,技术栈广度、深度是否在瓶颈里徘徊,思考下怎么突破。
面试只是一份求职的开始,面试题也只是学习过程的知识点总结,只流于背题很容易被问倒。不同的面试官风格、水平、关注点也都不同,只有自己学扎实了才能随心所面。
以上的技术框架总结有一个xmind思维导图,以及面试简历,都可以通过在公众号:,回复资源下载进行获取。