都2021年了,还不知道面试问什么?(JAVA篇)

很多童鞋们现在还是不清楚面试的时候我们应该怎么做
面试官一般情况下都是先让应聘者来一段自我介绍,由此通过你透露的基本信息,自身项目经验与能力的沉淀,给面试官留出继续讨论下去的话题。

自我介绍主要说什么呢?

  1. 1 分钟左右的自我介绍,简要的描述出;姓名、毕业时间、工作年限、 工作经历、技术影响力[博客、Github、开源贡献、专利]等。
  2. 如果有较大型项目或者大家有一致性认知的项目和技术难点攻克,可以 简单说出项目名称等。
  3. 方法论沉淀相关;架构设计能力、带过小组或者团队、跨部门协调、流 程规范制定和执行等。

1. 算法

算法一整块内容来考的互联网公司目前有一些,比如;头条、谷歌、百度,但不
一定所有职位都需要去考算法。热频考点大部分可以分如下几块:
1. 动态规划
2. 数据结构
3. 算法思维
在题目上一般会有排序、二分查找、回文链表、反链链表,和数据结构设计方面。
这些题目可以通过  刷题进行练习。

2.技术栈

	技术栈考查的是程序员在编程开发领域学习的广度和深度,日常的业务开发往往
提升都是对 API 使用的熟练程度,如果再缺少一些系统设计和技术难点攻克,或
者说没有大流量的冲击。那么确实很难回答一些技术深度问题。如下汇总了基本
会再技术栈面试中涉及的考题,可以参考提升个人技术能力。

2.1 技能

	1.1 Java 
JDK 源码
		1. HashMap
		2. HashMap 的数据结构(1.7、1.8 的区别)
		3. HashMap 的实现原理
		4. HashMap 扩容为什么是 2^n-1
		5. HashMap 是线程安全的吗
		6. 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 并行流
并发编程(j.u.c)
	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
		3
框架 
	1 Spring 
		1. Bean 的注册过程
		2. Bean 的定义都包括什么信息
		3. 3. Spring 事务中的隔离级别有哪几种
		4. schedule 使用
	2 Mybatis 
		1. mybatis 在 spring 的使用中,只需要定义接口,就可以和 xml 中的配置
		的 sql 语句,进行关联,执行数据库增删改查操作。怎么实现的
		2. session 是怎么管理的
	3 SpringBoot 
		1. SpringBoot 怎么开发一个自己的 Stater
	4 SpringCloud 
		1. spring cloud 断路器的作用是什么
		2. spring cloud 的核心组件有哪些 Eureka:服务注册于发现。 Feign:
		基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起
		请求。 Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。
		Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调
		用的隔离,避免了服务雪崩的问题。 Zuul:网关管理,由 Zuul 网关转
		发请求给对应的服务。
3 组件 
		1 Dubbo 
			1. 通信模型是什么样的
			2. Dubbo 和 Spring Cloud 有什么区别
			3. dubbo 都支持什么协议,推荐用哪种 dubbo://(推荐) rmi:// 
			hessian:// http:// webservice:// thrift:// memcached:// 
			redis:// rest://
			4. Dubbo 里面有哪几种节点角色
			5. Dubbo 中怎么处理的超时断开
		2 Mq 
			1. RabbitMq
			2. Kafka
		3 elasticsearch
			1. elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大
			小,分片有多少,以及一些调优手段 。
			2. elasticsearch 的倒排索引是什么
			3. elasticsearch 是如何实现 master 选举的
			4. 详细描述一下 Elasticsearch 搜索的过程
		4 Hbase 
			1. 拓展类问题
		5 otter 
			1. 拓展类问题
 工具 
		1. Idea
		2. Maven
		3. Jenkins
		4. JMeter
架构 
	1 系统搭建 
			1. MVC
			2. DDD 领域驱动设计
	2 数据库设计 
		1. 分库分表(水平拆分、垂直拆分)
		2. 业务场景
		3. 基础配置优化相关
	3 服务治理 
		1. 负载均衡
		2. 熔断
		3. 降级
		4. 限流
		5. 黑白名单
	4 分布式任务 
		1. xxl-job
	5 监控 
		1. 系统非入侵全链路监控
		2. TP99、TP999、QPS、TPS 的熟悉程度
	6 压测 
		1. 是否压测过,有无经验
		2. 对系统健壮性的把控
		3. JVM 参数
		4. GC 调优
		5. 代码优化
环境 
	1. Linux
	2. Tomcat
	3. docker
	4. k8s
项目 
	1 项目经验 
		1. 开发了哪些项目
		2. 重点项目是什么
		3. 你主要负责哪些
		4. 有过什么优化
	2 工作业绩 
		1. 中大型项目架构能力
		2. 复杂项目落地能力
		3. 重点项目执行落地
		4. 交付能力&质量
	3 技术沉淀 
		1. 方法论
		2. 流程规范制定
		3. 交付质量
		4. 公用组件建设
		5. 开源项目
		6. 复杂架构设计经验
		7. 团队技术分享
	4 工程师品质 
		1. 认知范围,技术、业务、运营
		2. 学习能力,接受能力
		3. 创新技术,迁移能力
	5 疑难问题处理 
		1. 复杂问题推进解决能力
		2. 紧急事故解决能力
	6 项目推进 
		1. 中大型项目推进落地
		2. 资源协调安排
		3. 流程规范实施
	7 专业影响力 
		1. 项目推进过程中方案执行落地
		2. 带动他人共同完成,并赋予能力提升
		3. 技术价值创造
		4. 开源项目和专利

个人&面试官 
	1 个人 
		1. 可能会有一个人性的问题
		2. 介绍自己部门是什么的
		3. 其他你早点入职
	2 面试官 
		1. 部门主要做什么业务
		2. 入职后承担哪块
		3. 有什么技术挑战需要提前学习了解的

根据这些汇总信息来进行面试复习,认真的熟悉过后,不仅有利于面试,对我们的技术学习也是有很大的帮助

猜你喜欢

转载自blog.csdn.net/yunchan2675/article/details/113336638