Java面试框架
Java面试框架
Java面试流程
简历编写和投递:主要是专业技能的编写和项目经验的编写
专业技能:
项目经验:MES智慧工厂项目
面试:自我介绍和项目介绍,项目相关问题和八股文
自我介绍:面试官,你好,我工作有1年了,最近做到一个项目上给力神公司做的MES系统,主要是模组的生产制造过程的信息化
自我介绍
1、介绍姓名、毕业时间、工作年限、工作经历、技术影响力(博客、GitHub、开源贡献、专利)
2、开发过的较大型项目,解决过的复杂技术问题,相关方法论的沉淀
3、带过团队、做过架构设计、承担过PO职责、推进过重点项目落地、协同过跨部门开发
核心:个人的基本信息,以及项目和技术上的沉淀,给面试官留出和你聊下去的话题 例如:面试官你好,我叫张三,23年毕业于XXX大学,软件工程专业,目前已经工作3年。我从毕业后就职于xxx科技公司,负责营销和订单系统发开发。在系统搭建、代码优化、问题处理上有较丰富的经验和处理能力。同时也喜欢写一些 技术博客和看一些技术书籍,另外在Spring、Dubbo等源码学习上有过一些研究以及复用到业务开发中
面试类型:
1、直接提问型:直接提问一些技术栈问题或者有些公司会考算法
2、场景引导型:通过让你介绍你的一些项目经历,用过什么技术栈,在场景下提问,需要你有一定的开发架构经验和项目落地能力 每一个场景就是一个复杂问题的解决能力,这里问到的场景会与你简历中的工作经历和项目相关,但复杂程度超过你当前的项目 比如:你写了一个订单类的,那么会问你秒杀类的实际解决方案,这样的问题很难背题应付,需要经历过
3、连环追问型:从一个小的技术点出发,每一个回答都在为下一个深入的问题做开始,在招聘高级别的开发会进行定向深入挖掘提问
4、压力逼问型:越不会什么,面试官越问你什么,让你感受高级面试官的气场,能扛住的并抓住重点,offer就稳了
算法
- 动态规划
- 算法思维
- 数据结构
- 高频题目:排序、二分查找、回文链表、数据结构设计,刷leetcode
技术栈
Java
JDK源码
- HashMap
- HashMap的数据结构(1.7、1.8的区别)
- HashMap的实现原理
- HashMap扩容为什么是2^n-1
- HashMap是线程安全的吗
- HashMap、HashTable是什么关系?
- ThreadLocal
- 讲讲你对ThreadLocal的一些理解
- ThreadLocal有哪些应用场景
- 了解过FastThreadLocal吗
- ArrayList、LinkList
- 是否保证线程安全
- 底层数据结构
- 插入和删除是否受元素位置的影响
- 是否支持快速随机访问
- 内存空间占用
- 如何进行扩容的,默认初始化空间是多少
- String StringBuffer StringBuilder
- 有什么区别
- 是线程安全的吗
- jdk1.8的新特性
- lambda表达式
- Functional Interfaces
- Optionals
- Stream 流
- Parallel-Streams 并行流
并发编程
- volatile
- volatile 的作用和使用场景
- volatile 如何保证指令重排
- 什么情况下会发生指令重排
- synchronized
- 一般用在什么场景
- 实现原理
- 锁升级过程(偏向锁、轻量级锁、重量级锁)
- 这是JVM层面锁,还是JDK层面锁{JVM层面}
- 这是一种悲观锁还是乐观锁{悲观锁是独占锁}
- lock
- 这是JVM层面锁,还是JDK层面锁{JDK层面}
- 这是一种悲观锁还是乐观锁
- 是可重入锁吗
- ReentrantLock
- 与synchronized相比较有什么不同
- ReentrantLock 与 Lock 的关系
- 锁过程中是否可中断,与之对应的synchronized可中断吗
- CAS
- Unsafe 类的作用
- CAS 的理解(compareAndSet)
- 什么是ABA问题
- CAS的实现有什么(AtomicInteger)
- AQS
- 实现类有哪些 ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier
- 实现了AQS的锁有哪些 自旋锁、互斥锁、读锁写锁、条件产量、信号量、栅栏都是AQS的衍生物 内存屏障,几乎所有的处理器至少支持一种粗粒度的屏障指令,通常被称为“栅栏(Fence)”
多线程
- 线程池的种类
- newCachedThreadPool
- newFixedThreadPool
- newScheduledThreadPool
- newSingleThreadExecutor
- 线程的生命周期
- 新建、就绪、运行、阻塞(等待阻塞、同步阻塞、其他阻塞)、死亡
JVM
- GC 优化
- JVM 逃逸分析
- 类的对象头都包括什么
- new Object() 初始化都做了什么
- 运行时数据区
- Java的内存模型以及GC算法
设计模式
- 设计模式6大原则 单一职责(一个类和方法只做一件事)、里氏替换(多态,子类可扩展父类)、依赖倒置(细节依赖抽象,下层依赖上层)、接口隔离(建立单一接口)、迪米特原则(最少知道,降低耦合)、开闭原则(抽象架构,扩展实现)
- 创建型模式 这类模式提供创建对象的机制, 能够提升已有代码的灵活性和可复用性。
- 结构型模式 这类模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
- 行为模式 这类模式负责对象间的高效沟通和职责委派。
反射、代理
- 怎么实现反射调用方法
- 怎么代理一个类,有什么场景使用
- 类代理的原理是什么
- 有什么框架可以做类代理
Redis
命令
- 计数命令
- 排序命令
- 加锁命令
架构
- 常用的数据类型
- 数据淘汰策略
- 单线程的为什么那么快
- RDB和AOF的优缺点
- 持久化策略选择
应用
- 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
- Pipeline有什么好处,为什么要用pipeline
- 是否使用过Redis集群,集群的原理是什么
- Redis的同步机制了解么
MySQL
锁
- 全局锁
- 表锁
- 行锁
- 乐观锁、悲观锁
- 排他锁
- 锁优化
事务
- 事物特征
- 脏读
- 幻读
- 不可重复读
- 事物隔离
- 并发事物
- 事物实现原理
日志
- 慢查询日志
- 错误日志
- redo log(重做日志)
- binlog(归档日志)
- undo log(回滚日志)
索引
- 聚集索引 VS 非聚集索引
- 最左匹配原则
- 前缀索引
引擎
- InnoDB
- MyISAM
框架
Spring
- Bean的注册过程
- Bean的定义都包括什么信息
- Spring 事务中的隔离级别有哪几种
- schedule 使用
MyBatis
- mybatis在spring的使用中,只需要定义接口,就可以和xml中的配置的sql语句,进行关联,执行数据库增删改查操作。怎么实现的
- session是怎么管理的
SpringBoot
- [SpringBoot 中间件设计和开发(opens new window)](https://bugstack.cn/md/project/springboot-middleware/2021-03-31-《SpringBoot 中间件设计和开发》专栏小册上线啦!.html)
- SpringBoot 怎么开发一个自己的Stater
SpringCloud
- spring cloud 断路器的作用是什么
- spring cloud 的核心组件有哪些 Eureka:服务注册于发现。 Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。 Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。 Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。 Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。
组件
Dubbo
- 通信模型是什么样的
- Dubbo 和 Spring Cloud 有什么区别
- dubbo都支持什么协议,推荐用哪种 dubbo://(推荐) rmi:// hessian:// http:// webservice:// thrift:// memcached:// redis:// rest://
- Dubbo里面有哪几种节点角色
- Dubbo中怎么处理的超时断开
MQ
- RabbitMq
- Kafka
ElasticSearch
- elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
- elasticsearch 的倒排索引是什么
- elasticsearch 是如何实现 master 选举的
- 详细描述一下 Elasticsearch 搜索的过程
Hbase
- 拓展类问题
otter
- 拓展类问题
工具
- Idea
- Maven
- Jenkins
- JMeter
架构
系统搭建
- MVC
- DDD 领域驱动设计
数据库设计
- 分库分表(水平拆分、垂直拆分)
- 业务场景
- 基础配置优化相关
服务治理
- 负载均衡
- 熔断
- 降级
- 限流
- 黑白名单
分布式任务
- xxl-job
监控
- 系统非入侵全链路监控
- TP99、TP999、QPS、TPS的熟悉程度
压测
- 是否压测过,有无经验
- 对系统健壮性的把控
- JVM参数
- GC调优
- 代码优化
环境
- Linux
- Tomcat
- docker
- k8s
项目
- Lottery 抽奖系统 - 基于领域驱动设计的四层架构实践(opens new window)
- Netty+JavaFx实战:仿桌面版微信聊天(opens new window)
- API网关:中间件设计和实践(opens new window)
项目经验
- 开发了哪些项目
- 重点项目是什么
- 你主要负责哪些
- 有过什么优化
工作业绩
- 中大型项目架构能力
- 复杂项目落地能力
- 重点项目执行落地
- 交付能力&质量
技术沉淀
- 方法论
- 流程规范制定
- 交付质量
- 公用组件建设
- 开源项目
- 复杂架构设计经验
- 团队技术分享
工程师品质
- 认知范围,技术、业务、运营
- 学习能力,接受能力
- 创新技术,迁移能力
疑难问题处理
- 复杂问题推进解决能力
- 紧急事故解决能力
项目推进
- 中大型项目推进落地
- 资源协调安排
- 流程规范实施
专业影响力
- 项目推进过程中方案执行落地
- 带动他人共同完成,并赋予能力提升
- 技术价值创造
- 开源项目和专利
个人&面试官
个人
- 可能会有一个人性的问题
- 介绍自己部门是什么的
- 其他你早点入职
面试官
- 部门主要做什么业务
- 入职后承担哪块
- 有什么技术挑战需要提前学习了解的
- 结合以上框架内容看自己是否是一个能抗住打的求职者,综合素质是否全面,技术栈广度、深度是否在瓶颈里徘徊,思考下怎么突破。
- 面试只是一份求职的开始,面试题也只是学习过程的知识点总结,只流于背题很容易被问倒。不同的面试官风格、水平、关注点也都不同,只有自己学扎实了才能随心所面。
Java求职
建议
- 尽早做规划,可以通过大厂招聘官网的岗位描述来了解岗位的要求
- 雕琢一份优秀的简历,推荐阅读:https://mp.weixin.qq.com/s/wfabzdpOPdq89faFFpZ4NA(opens new window)
- 多读面经,坚持刷算法
- 多参与面试,持续复盘总结
校招岗位
- 阿里 Java 开发:https://campus.alibaba.com/position.htm?refno=12699(opens new window)
- 腾讯后台开发:https://join.qq.com/post_detail.html?pid=1&id=101&tid=2(opens new window)
- 腾讯全栈开发:https://join.qq.com/post_detail.html?pid=1&id=137&tid=2(opens new window)
- 腾讯运营开发:https://join.qq.com/post_detail.html?pid=1&id=105&tid=2(opens new window)
- 美团后端开发:https://campus.meituan.com/jobs?jobFamily=1&jobId=4005&jobType=1&pageNo=2(opens new window)
- 华为软件开发:https://career.huawei.com/reccampportal/portal5/campus-recruitment-detail.html?jobId=176044(opens new window)
社招岗位
- 阿里社招:https://job.alibaba.com/zhaopin/positionList.htm(opens new window)
- 腾讯社招:https://careers.tencent.com/search.html(opens new window)
鱼皮经历
- 从 0 开始的编程学习进大厂经历
- 实习经历
知识总结
- ⭐ JavaGuide:https://snailclimb.gitee.io/javaguide/#/(opens new window)
- ⭐ CS-Notes:http://www.cyc2018.xyz/(opens new window)
- 阿里 Java 技术图谱:https://developer.aliyun.com/graph/java(opens new window)
面经
编程导航面经汇总:https://yuyuanweb.feishu.cn/wiki/PLHrwcEPCiJcxXk7Ki4csRoJn2f(opens new window)
面试题解
编程导航精选面试题汇总:https://yuyuanweb.feishu.cn/wiki/CmFywXs0Oi0MS9kU3yocJugFn2e(opens new window)
视频
- ⭐ 尚硅谷 2021 逆袭版 Java 面试题第三季:https://www.bilibili.com/video/BV1Hy4y1B78T(opens new window)
- ⭐ 阿里大佬透彻讲解 Java 面试 500 道必考题:https://www.bilibili.com/video/BV1yU4y1J7Bb(opens new window)
持续学习
目标
持续追求技术的深度和广度,培养自己的 核心竞争力 和 不可替代性 ,学无止境!
学习建议
自主学习,自主搜索教程,多看书,多阅读技术博客,多实践。
学习方向
框架源码
- Spring
- SpringBoot
- SpringMVC
- MyBatis
- Netty
- Dubbo
- SpringCloud
计算机原理
- 《算法导论》:https://www.bilibili.com/video/av48922404(opens new window)
- 《现代操作系统》:https://www.bilibili.com/video/av9555596(opens new window)
- 《深入理解计算机系统》:https://www.bilibili.com/video/av31289365(opens new window)
- 《编译原理》: https://www.bilibili.com/video/av17649289(opens new window)
- 《计算机网络:自顶向下方法》:https://www.bilibili.com/video/BV1JV411t7ow(opens new window)
- 《计算机程序的构造和解释》:https://www.bilibili.com/video/av8515129(opens new window)
- 《数据库系统概论》:https://www.bilibili.com/video/BV1G54y1d7ZK(opens new window)
数据库 / 中间件 / 分布式
- 数据库
- MySQL
- PostgreSQL
- 缓存
- Redis
- 队列
- Apache Kafka
- Apache Pulsar
- 搜索引擎
- Elastic Stack
- Elasticsearch
- logstash
- kibana
- beats
- Elastic Stack
- 容器
- Docker
- K8S
解决方案
- 广告系统
- 电商系统
- 搜索系统
- 支付转账
- 游戏后台
- 即时通讯
- 社交系统
- CMS 系统
- ERP 系统
- OA 系统
- 代码生成
- 权限管理
- 秒杀活动
架构设计
同阶段 6 架构设计部分
大数据
- 5V 特点
- Hadoop
- HDFS
- MapReduce
- Spark
- Flink
- Storm
- Hive
- HBase
- Druid
- Kylin
- Pig
- Mahout
前沿技术
云原生:
https://www.jianshu.com/p/a37baa7c3eff(opens new window)
- Quasar Framework:http://www.quasarchs.com/(opens new window)
服务网格:
https://www.redhat.com/zh/topics/microservices/what-is-a-service-mesh(opens new window)
GraalVM:
https://juejin.cn/post/6850418120570437646 (opens new window)
(高性能的通用虚拟机)
ZGC:
https://juejin.cn/post/6859276583656980493 (opens new window)
(新一代垃圾回收器)
自学 Java 专题资源
- ⭐ GitHub Java 专区:https://github.com/topics/java(opens new window)
- ⭐ GitHub Java 合集:https://github.com/akullpp/awesome-java(opens new window)
- StackOverflow:https://stackoverflow.com/questions/tagged/java (opens new window)(解决问题必备)
- ⭐ 掘金 Java 专区:https://juejin.cn/tag/Java(opens new window)
- 美团技术团队:https://tech.meituan.com/(opens new window)
- 阿里技术团队:https://102.alibaba.com/tech/list/(opens new window)
- 有赞技术团队:https://tech.youzan.com/tag/back-end/