二年后端JAVA开发面经分享(较全面试大纲)

一、背景

    本人2018届本科计算机毕业,前面2家待的都是小公司(对于找工作来说可以说是十分不利的),技术水平一般,历经一个月大概面了大概10家公司,其中大中小厂都有(包含蚂蚁、阿里新零售和字节。PS:无奈水平不济深度和算法都太薄弱都挂了)。最终去了个中厂公司,在此记录下面试中碰到的知识点,以便后续复习总结使用,并分享给还在面试中有需要的小伙伴参考。

二、面试

 

JAVA基础相关

  • 重写和重载的区别?重写的话返回值可以变吗?
  • 什么时候需要重写hashCode和equals方法?如果不重写的话hashCode和equals比较的是什么值呢?hashCode一样equals一定一样吗?反过来呢?(频繁)
  • java8新特性有哪些了解吗?lambda原理是什么?那你知道steam流的工作机制吗?
  • 抽象类和接口的关系和区别,以及你在时间开发过程中是怎么使用到的?
  • 基本数据类型转换为String时你有几种方法,分别是什么?

 

集合相关

  • java里的集合有哪些?
  • arrayListLinkedList的内部数据结构了解吗?两则之间的区别和使用场景能说下吗?arrayList扩容流程说下?(频繁)
  • 你说arrayList用get方法查找时间复杂度是O(1),能说下为什么吗?
  • hashMap有了解吗?底层采用什么数据结构?1.8做了哪些优化?能说下调用put方法的大致流程吗?计算哈希时为什么要用key进行高16位异或运算?为什么说hashMap的容量总是2的倍数呢?什么时候节点会转化成红黑树?(频繁)
  • linkedHashMaphashMap有什么区别?链表的特点是什么?linkedHashMap里的元素能保证是有序的吗?(频繁)
  • ConcurrentHashMap有使用过吗?能说下1.8的时候他执行put方法的流程吗?什么时候进行锁优化呢?(频繁)
  • hashSetTreeSet有了解过吗?彼此的底层数据结构是怎样的?他是怎么判断去重的呢?(频繁)

 

并发相关

  • 线程池有使用过吗?有哪几个参数?每个参数的作用能说下吗?线程池的处理流程能说下?(频繁)
  • 简单谈谈线程的几种状态?以及如何进行状态转换?调用notify方法后线程后立即进入进行状态吗?为什么?(频繁)
  • 一个线程连续两次调用start方法会发生什么?
  • synchronized关键字的作用?修饰静态方法、普通方法和普通对象的区别是什么? synchronized锁升级过程有了解过没?(频繁)
  • volatile的作用是什么?为什么说他可以保证内存的可见性和指令不重排?你知道原理吗?volatilesynchronized的区别是什么?(频繁)
  • BlockingQueue有了解吗?有哪些成员?ArrayBlockingQueueLinkedBlockingQueue的区别是什么?
  • AQS了解吗?原理是什么?有哪些同步组件?
  • 你知道的java锁有哪些?synchronizedReentrantLock的区别有哪些?是怎么保证可重入锁的?ReentrantLock是如何保证公平的?(频繁)
  • 什么是可重入锁?是如何实现可重入锁的?
  • 要实现A,B线程异步执行完再执行C线程你会有哪些方法?
  • 保证一个变量或者方法线程安全有哪些方法?
  • threadLocal是干嘛用的?会有什么问题?你知道他的底层原理嘛?(频繁)

 

JVM相关

  • JVM内存模型有哪些说一下?程序计数器是干嘛用的?什么区域会发生OOM行为呢?(频繁)
  • 对象一定是在堆里创建的吗?什么是逃逸分析?在日常代码写代码中如何避免对象逃逸?
  • 对象创建的过程,你能简单说一下吗?(频繁)
  • 对象分配内存是哪些策略?JVM是如何保证对象创建内存分配安全问题的呢?
  • 创建一个线程需要多少内存?
  • 你在项目中有发生oom的情况吗?是为什么发生的?你是怎么定位到问题的呢?(频繁)

 

spring相关

  • beanFactoryfactoryBean之间的区别?
  • beanFactoryapplicationContext之间的区别?
  • bean对象的生命周期流程简单说一下?(频繁)
  • spring是如何解决循环依赖的?你能简单说下三级缓存的工作流程吗?(频繁)
  • spring事务了解吗?事务的四个特性?事务隔离级别讲一下?什么时候事务会失效?在类里使用this调用方法会开启事务吗?为什么?(频繁)
  • mybatis方法支持重载吗?

 

微服务相关

  • 微服务的特点是什么?你的项目为什么采用微服务?那你觉得相比单体应用微服务有什么优势吗?(频繁)
  • springBoot了解的多吗?能说下相比spring的优势是什么?你知道springboot的自动装配机制吗?springboot的启动流程你能简单说下?(频繁)
  • springBoot和springCloud是什么关系?
  • 你用过springCloud的哪些组件能说下吗?
  • 网关的作用有哪些?
  • feign的底层原理是什么?他是如何能调用到你的请求的呢?feign和dubbo有哪些区别?负载均衡的策略有哪些呢?
  • 注册中心的作用是什么?
  • 在你项目里是如何保证分布式事务一致性的问题?(频繁)
  • 微服务调用的时候A模块调用B模块超时的话怎么办,你会怎么处理微服务模块调用超时的问题?比如支付的时候。(频繁)

 

redis及缓存相关

  • 什么是缓存?
  • 在你项目中redis使用场景有哪些?redis常用的数据结构有哪些?(频繁)
  • redis效率那么高是为什么?什么是IO多路复用呢?
  • 本地缓存和redis缓存的差异是什么?为什么说redis也是基于内存操作但效率不如本地缓存呢,主要差异是产生在什么地方?
  • redis集群有几种模式?能说下他们之间的区别吗?为什么rediscluster采用哈希槽而不是采用一致性哈希呢?
  • 你知道缓存雪崩吗?实际设计系统时,怎么避免缓存雪崩?
  • 缓存击穿和缓存穿透是什么?怎么避免?
  • 你知道zset的底层原理吗?什么是跳跃表?为什么采用跳跃表不采用红黑树这种数据结构呢?
  • 在你项目中是如何设计分布式锁的?如何保证setnx和expire是原子性操作呢?如何保证当前锁不会被其他线程释放?(频繁)

 

mq及其他中间件相关

  • rocketMQ和kafka的区别是什么?
  • mq如何保证消息不被丢失?(频繁)
  • mq如何保证幂等性问题?(频繁)
  • rocketMQ里主要包含哪几个部分?你能简单说下每个部分的作用吗?
  • rocketMQ是如何支持分布式事务的?(频繁)
  • rocketMQ的rebalance过程你能简单说下吗?
  • zookeeper的使用场景?

 

linux相关

  • shell中常用的命令有哪些?
  • 如果要在一个有10W行的文本中找出你要的关键字行,你会使用说明命令去查找?
  • 进程和线程的区别?(频繁)
  • 用户态与内核态?(频繁)
  • select、poll、epoll?(频繁)
  • shell中如何结束进程?原理是什么?

 

网络相关

  • url请求流程?
  • 为什么TCP连接的时候时候需要三次握手和四次挥手?如果握手二次、挥手三次可能会出现什么问题?(频繁)
  • ajax是如何实现异步请求的?(频繁)
  • http和https的差别?https的流程你知道吗?(频繁)
  • get和post请求有什么区别?
  • http请求包含哪些内容你知道吗?http2.0相对1.0做了哪些优化?

 

算法相关

  • 你了解的排序算法有哪些?那这些算法哪些是稳定的排序算法?能简单讲下快速排序是怎么实现的吗?
  • 两个有序数组排序的话,你会用哪种算法?int[] a = {2,4,8} int[] b={1,3,5,7,9}?
  • 给你一个链表1->2->3->->5->6->7->8,我要你做到隔k反转,比如k等于5时输出结果,5->4->3->2-1>8->7->6,请问你怎么实现?
  • 盛最多容器的水?(leetcode题目编号:11)
  • 手写二叉树前序遍历非递归实现。
  • 对称加密和非对称加密的区别?你了解哪些对称加密算法?非对称加密呢?
  • 加密和加签有什么区别?
  • 你说你了解共识算法,简单讲下raft共识算法的原理?PBFT算法和raft算法的主要区别是什么呢? 为啥说raft可容忍的错误节点数是f=(n-1)/2,而PBFT是f=(n-1)/3呢?

 

mysql相关

  • mysql默认的隔离级别是什么?mysql是如何解决幻读的问题?(频繁)
  • MVCC机制的实现原理是什么?(频繁)
  • redo log、undo log、binlog三者的区别?(频繁)
  • mysql为啥要使用b+树这种数据结构作为索引,为啥不使用b树或者红黑树呢?(频繁)
  • mysql执行流程?
  • mysql索引失效有哪些场景?(频繁)
  • mysql是怎么通过索引找到这条数据的?什么时候会出现全表扫描什么时候比索引还快?
  • 你写sql有什么技巧或者需要注意的吗,分享一下。

 

项目常问问题及闲谈相关

  • 你未来的职业生涯规划是什么?是准备都往技术方面发展嘛?
  • 在你项目里支付的时候是怎样保证不会出现重复支付的场景?下订单的时候如何避免客户重复下单的呢?
  • 如果要你去设计一个高并发的分布式系统?你会从哪几个方面进行考虑?
  • 给你10000张优惠券,在高并发情况下你会怎么考虑去发放这些优惠券呢?
  • 你们公司有做code view吗?你认为怎样的代码才是好代码?(频繁)
  • 你还有什么想问我的吗?(频繁)

 

HR面相关

  • 你自学的方式有哪些?最近在看什么书?看了XX书感觉最大的收获是什么,能给我讲一下吗?(频繁)
  • 你觉得你在生活中是一个怎样的人?你觉得你的同事给你的评价是怎样的?
  • 你觉得你有哪些优缺点?你觉得你最大的优势是什么?(频繁)
  • 在项目中有碰到什么难题吗?最后是怎么解决的?还有吗?(频繁)
  • 你做的XX项目大概有几个人,你在里面担当什么职位呢?(频繁)
  • 对于加班的看法?(频繁)
  • 你未来的职业生涯规划是什么?
  • 请问你离职的原因是什么?(频繁)
  • 你对我们公司了解多少?对于大概薪资的期望?(频繁)
  • 对下一份工作最看重什么?(频繁)

 

三、总结

以上是两年经验近期面试被问到的大多数技术性基础题,答案的话后续若有空闲的话会慢慢整理并更新,觉得有用的话可以点个赞哦!

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值