跳至主要內容

Java面试框架

Mr.Xu约 3977 字大约 13 分钟

Java面试框架

Java面试流程

    1. 简历编写和投递:主要是专业技能的编写和项目经验的编写

      专业技能:

      项目经验:MES智慧工厂项目

    1. 面试:自我介绍和项目介绍,项目相关问题和八股文

      自我介绍:面试官,你好,我工作有1年了,最近做到一个项目上给力神公司做的MES系统,主要是模组的生产制造过程的信息化

自我介绍

1、介绍姓名、毕业时间、工作年限、工作经历、技术影响力(博客、GitHub、开源贡献、专利)

2、开发过的较大型项目,解决过的复杂技术问题,相关方法论的沉淀

3、带过团队、做过架构设计、承担过PO职责、推进过重点项目落地、协同过跨部门开发

核心:个人的基本信息,以及项目和技术上的沉淀,给面试官留出和你聊下去的话题 例如:面试官你好,我叫张三,23年毕业于XXX大学,软件工程专业,目前已经工作3年。我从毕业后就职于xxx科技公司,负责营销和订单系统发开发。在系统搭建、代码优化、问题处理上有较丰富的经验和处理能力。同时也喜欢写一些 技术博客和看一些技术书籍,另外在Spring、Dubbo等源码学习上有过一些研究以及复用到业务开发中

面试类型:

1、直接提问型:直接提问一些技术栈问题或者有些公司会考算法

2、场景引导型:通过让你介绍你的一些项目经历,用过什么技术栈,在场景下提问,需要你有一定的开发架构经验和项目落地能力 每一个场景就是一个复杂问题的解决能力,这里问到的场景会与你简历中的工作经历和项目相关,但复杂程度超过你当前的项目 比如:你写了一个订单类的,那么会问你秒杀类的实际解决方案,这样的问题很难背题应付,需要经历过

3、连环追问型:从一个小的技术点出发,每一个回答都在为下一个深入的问题做开始,在招聘高级别的开发会进行定向深入挖掘提问

4、压力逼问型:越不会什么,面试官越问你什么,让你感受高级面试官的气场,能扛住的并抓住重点,offer就稳了

算法

  • 动态规划
  • 算法思维
  • 数据结构
  • 高频题目:排序、二分查找、回文链表、数据结构设计,刷leetcode

技术栈

Java

JDK源码

  1. HashMap
    1. HashMap的数据结构(1.7、1.8的区别)
    2. HashMap的实现原理
    3. HashMap扩容为什么是2^n-1
    4. HashMap是线程安全的吗
    5. HashMap、HashTable是什么关系?
  2. ThreadLocal
    1. 讲讲你对ThreadLocal的一些理解
    2. ThreadLocal有哪些应用场景
    3. 了解过FastThreadLocal吗
  3. ArrayList、LinkList
    1. 是否保证线程安全
    2. 底层数据结构
    3. 插入和删除是否受元素位置的影响
    4. 是否支持快速随机访问
    5. 内存空间占用
    6. 如何进行扩容的,默认初始化空间是多少
  4. String StringBuffer StringBuilder
    1. 有什么区别
    2. 是线程安全的吗
  5. jdk1.8的新特性
    1. lambda表达式
    2. Functional Interfaces
    3. Optionals
    4. Stream 流
    5. Parallel-Streams 并行流

并发编程

  1. volatile
    1. volatile 的作用和使用场景
    2. volatile 如何保证指令重排
    3. 什么情况下会发生指令重排
  2. synchronized
    1. 一般用在什么场景
    2. 实现原理
    3. 锁升级过程(偏向锁、轻量级锁、重量级锁)
    4. 这是JVM层面锁,还是JDK层面锁{JVM层面}
    5. 这是一种悲观锁还是乐观锁{悲观锁是独占锁}
  3. lock
    1. 这是JVM层面锁,还是JDK层面锁{JDK层面}
    2. 这是一种悲观锁还是乐观锁
    3. 是可重入锁吗
  4. ReentrantLock
    1. 与synchronized相比较有什么不同
    2. ReentrantLock 与 Lock 的关系
    3. 锁过程中是否可中断,与之对应的synchronized可中断吗
  5. CAS
    1. Unsafe 类的作用
    2. CAS 的理解(compareAndSet)
    3. 什么是ABA问题
    4. CAS的实现有什么(AtomicInteger)
  6. AQS
    1. 实现类有哪些 ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier
    2. 实现了AQS的锁有哪些 自旋锁、互斥锁、读锁写锁、条件产量、信号量、栅栏都是AQS的衍生物 内存屏障,几乎所有的处理器至少支持一种粗粒度的屏障指令,通常被称为“栅栏(Fence)”

多线程

  1. 线程池的种类
    1. newCachedThreadPool
    2. newFixedThreadPool
    3. newScheduledThreadPool
    4. newSingleThreadExecutor
  2. 线程的生命周期
    1. 新建、就绪、运行、阻塞(等待阻塞、同步阻塞、其他阻塞)、死亡

JVM

  1. GC 优化
  2. JVM 逃逸分析
  3. 类的对象头都包括什么
  4. new Object() 初始化都做了什么
  5. 运行时数据区
  6. Java的内存模型以及GC算法

设计模式

  1. 设计模式6大原则 单一职责(一个类和方法只做一件事)、里氏替换(多态,子类可扩展父类)、依赖倒置(细节依赖抽象,下层依赖上层)、接口隔离(建立单一接口)、迪米特原则(最少知道,降低耦合)、开闭原则(抽象架构,扩展实现)
  2. 创建型模式 这类模式提供创建对象的机制, 能够提升已有代码的灵活性和可复用性。
  3. 结构型模式 这类模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
  4. 行为模式 这类模式负责对象间的高效沟通和职责委派。

反射、代理

  1. 怎么实现反射调用方法
  2. 怎么代理一个类,有什么场景使用
  3. 类代理的原理是什么
  4. 有什么框架可以做类代理

Redis

命令

  1. 计数命令
  2. 排序命令
  3. 加锁命令

架构

  1. 常用的数据类型
  2. 数据淘汰策略
  3. 单线程的为什么那么快
  4. RDB和AOF的优缺点
  5. 持久化策略选择

应用

  1. 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
  2. Pipeline有什么好处,为什么要用pipeline
  3. 是否使用过Redis集群,集群的原理是什么
  4. Redis的同步机制了解么

MySQL

  1. 全局锁
  2. 表锁
  3. 行锁
  4. 乐观锁、悲观锁
  5. 排他锁
  6. 锁优化

事务

  1. 事物特征
  2. 脏读
  3. 幻读
  4. 不可重复读
  5. 事物隔离
  6. 并发事物
  7. 事物实现原理

日志

  1. 慢查询日志
  2. 错误日志
  3. redo log(重做日志)
  4. binlog(归档日志)
  5. undo log(回滚日志)

索引

  1. 聚集索引 VS 非聚集索引
  2. 最左匹配原则
  3. 前缀索引

引擎

  1. InnoDB
  2. MyISAM

框架

Spring

  1. Bean的注册过程
  2. Bean的定义都包括什么信息
  3. Spring 事务中的隔离级别有哪几种
  4. schedule 使用

MyBatis

  1. mybatis在spring的使用中,只需要定义接口,就可以和xml中的配置的sql语句,进行关联,执行数据库增删改查操作。怎么实现的
  2. session是怎么管理的

SpringBoot

  1. SpringBoot 怎么开发一个自己的Stater

SpringCloud

  1. spring cloud 断路器的作用是什么
  2. spring cloud 的核心组件有哪些 Eureka:服务注册于发现。 Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。 Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。 Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。 Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。

组件

Dubbo

  1. 通信模型是什么样的
  2. Dubbo 和 Spring Cloud 有什么区别
  3. dubbo都支持什么协议,推荐用哪种 dubbo://(推荐) rmi:// hessian:// http:// webservice:// thrift:// memcached:// redis:// rest://
  4. Dubbo里面有哪几种节点角色
  5. Dubbo中怎么处理的超时断开

MQ

  1. RabbitMq
  2. Kafka

ElasticSearch

  1. elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
  2. elasticsearch 的倒排索引是什么
  3. elasticsearch 是如何实现 master 选举的
  4. 详细描述一下 Elasticsearch 搜索的过程

Hbase

  1. 拓展类问题

otter

  1. 拓展类问题

工具

  1. Idea
  2. Maven
  3. Jenkins
  4. JMeter

架构

系统搭建

  1. MVC
  2. DDD 领域驱动设计

数据库设计

  1. 分库分表(水平拆分、垂直拆分)
  2. 业务场景
  3. 基础配置优化相关

服务治理

  1. 负载均衡
  2. 熔断
  3. 降级
  4. 限流
  5. 黑白名单

分布式任务

  1. xxl-job

监控

  1. 系统非入侵全链路监控
  2. TP99、TP999、QPS、TPS的熟悉程度

压测

  1. 是否压测过,有无经验
  2. 对系统健壮性的把控
  3. JVM参数
  4. GC调优
  5. 代码优化

环境

  1. Linux
  2. Tomcat
  3. docker
  4. k8s

项目

项目经验

  1. 开发了哪些项目
  2. 重点项目是什么
  3. 你主要负责哪些
  4. 有过什么优化

工作业绩

  1. 中大型项目架构能力
  2. 复杂项目落地能力
  3. 重点项目执行落地
  4. 交付能力&质量

技术沉淀

  1. 方法论
  2. 流程规范制定
  3. 交付质量
  4. 公用组件建设
  5. 开源项目
  6. 复杂架构设计经验
  7. 团队技术分享

工程师品质

  1. 认知范围,技术、业务、运营
  2. 学习能力,接受能力
  3. 创新技术,迁移能力

疑难问题处理

  1. 复杂问题推进解决能力
  2. 紧急事故解决能力

项目推进

  1. 中大型项目推进落地
  2. 资源协调安排
  3. 流程规范实施

专业影响力

  1. 项目推进过程中方案执行落地
  2. 带动他人共同完成,并赋予能力提升
  3. 技术价值创造
  4. 开源项目和专利

个人&面试官

个人

  1. 可能会有一个人性的问题
  2. 介绍自己部门是什么的
  3. 其他你早点入职

面试官

  1. 部门主要做什么业务
  2. 入职后承担哪块
  3. 有什么技术挑战需要提前学习了解的
  • 结合以上框架内容看自己是否是一个能抗住打的求职者,综合素质是否全面,技术栈广度、深度是否在瓶颈里徘徊,思考下怎么突破。
  • 面试只是一份求职的开始,面试题也只是学习过程的知识点总结,只流于背题很容易被问倒。不同的面试官风格、水平、关注点也都不同,只有自己学扎实了才能随心所面。

Java求职

建议

  1. 尽早做规划,可以通过大厂招聘官网的岗位描述来了解岗位的要求
  2. 雕琢一份优秀的简历,推荐阅读:https://mp.weixin.qq.com/s/wfabzdpOPdq89faFFpZ4NA(opens new window)open in new window
  3. 多读面经,坚持刷算法
  4. 多参与面试,持续复盘总结

校招岗位

社招岗位

鱼皮经历

知识总结

面经

编程导航面经汇总:https://yuyuanweb.feishu.cn/wiki/PLHrwcEPCiJcxXk7Ki4csRoJn2f(opens new window)open in new window

面试题解

编程导航精选面试题汇总:https://yuyuanweb.feishu.cn/wiki/CmFywXs0Oi0MS9kU3yocJugFn2e(opens new window)open in new window

视频

持续学习

目标

持续追求技术的深度和广度,培养自己的 核心竞争力不可替代性 ,学无止境!

学习建议

自主学习,自主搜索教程,多看书,多阅读技术博客,多实践。

学习方向

框架源码
  • Spring
  • SpringBoot
  • SpringMVC
  • MyBatis
  • Netty
  • Dubbo
  • SpringCloud
计算机原理
数据库 / 中间件 / 分布式
  • 数据库
    • MySQL
    • PostgreSQL
  • 缓存
    • Redis
  • 队列
    • Apache Kafka
    • Apache Pulsar
  • 搜索引擎
    • Elastic Stack
      • Elasticsearch
      • logstash
      • kibana
      • beats
  • 容器
    • Docker
    • K8S
解决方案
  • 广告系统
  • 电商系统
  • 搜索系统
  • 支付转账
  • 游戏后台
  • 即时通讯
  • 社交系统
  • CMS 系统
  • ERP 系统
  • OA 系统
  • 代码生成
  • 权限管理
  • 秒杀活动
架构设计

同阶段 6 架构设计部分

大数据
  • 5V 特点
  • Hadoop
  • HDFS
  • MapReduce
  • Spark
  • Flink
  • Storm
  • Hive
  • HBase
  • Druid
  • Kylin
  • Pig
  • Mahout
前沿技术
自学 Java 专题资源