java后端 专题汇总

java后端 面试经验分享列表,共76

| 网上申请
面试过程:

自我介绍:简要介绍自己的工作经历和项目经验。
基础问题:涉及 Java 基础知识,如面向对象编程(OOP)、集合框架、异常处理等。
项目经验:简要介绍参与过的项目,重点是使用的技术栈和解决问题的方法。

面试官问的面试题:

说说hashmap数据结构(数组+链表,链表长度超过8此链表转为红黑树
以下问题问的很细,我用红色标注面试官的提问。
ArrayList和LinkedList区别,ArrayList有初始容量吗,你看的是jdk几版本 ,容量不够怎么办 ,扩容为多大 ,如果Arraylist当前容量是10,且有9个数据,那么是添加第10个数据时扩容还是第11个,扩容怎么实现的,为什么采用复制数组的方式而不是往后直接添加数据
ArrayList 初始容量10,在添加第 11 个元素时自动扩容,容量变为原容量的 1.5 倍,并通过复制数组的方式实现扩容,好处如下
连续存储:ArrayList 使用一个连续的数组来存储元素,这样可以快速访问和遍历元素。
内存效率:通过复制数组,可以确保数组始终保持连续存储,避免了数组中间插入元素导致的复杂性和性能开销。
线性增长:通过每次增加 1.5 倍的容量,可以在一定程度上减少频繁的扩容操作,提高整体性能。

赞一下(0) 踩一下

| 网上申请
面试过程:

面试一般从简历筛选开始,随后可能安排线上测评和笔试,通过后进入面试阶段;技术类岗位的面试可能侧重专业技能,而非技术岗位则更关注综合素质。流程时长因环节而异,例如技术面试可能持续20多分钟,而HR面试通常较短

面试官问的面试题:

常见于技术岗位,例如C++客户端研发岗位会考察HTTP协议(如状态码、GET/POST区别)、网络编程(如Linux Shell脚本、进程与线程)、多线程处理及版本控制(如Git);非技术岗位可能涉及大数据或AI算法基础知识

赞一下(0) 踩一下

面试过程:

看了站内的面经以为也是打电话来,看着那界面直接吓跪了
面试大概20min吧,问的都是我看过的,然后不会就很尴尬
开场自我介绍,然后问了下面的题:

面试官问的面试题:

介绍了一下项目
xxl-job路由策略(就记得一个轮询当时,常用的还有故障转移、分片广播等)
java的有序集合有哪些(list下的ArrayList、LinkedList、Vector map下的LinkedHashmap、TreeMap)
hashmap的常用方法(get、put),hashmap的扩容机制(添加元素或初始化时调用resize方法扩容,第一次添加数据初始化数组长度为16,之后每次达到扩容阈值(数组长度*负载因子(默认0.75))时扩容为原来的两倍,扩容后会创建新数组用来存储老数组中的元素,没有hash冲突的节点,直接使用e.hash&(newCap-1)计算新数组的位置,如果是红黑树,走红黑树的添加,如果是链表,则需要遍历链表,可能需要拆分链表,判断e.hash&oldCap是否为0,该元素要么停留在原位置要么移动的原始位置+增加的数组大小则换个位置上
问了下用的jdk版本(感觉可能是想问jdk8的新特性(Lambda表达式、Stream API、函数式接口等)我回的17就下一个问题了)
堆和栈的区别(管理方式:堆由垃圾回收器管理,栈由编译器自动管理 内存空间:堆空间大且不连续,栈空间小且连续 存储数据类型:堆存储对象实例和数组,栈存储基本数据类型、对象引用和函数调用信息 访问速度:堆快栈慢 生命周期: 堆由对象引用决定,栈随函数结束释放)
java变量存储在哪个区(栈内存:存储局部变量和方法调用的上下文 堆内存:存储所有创建的对象和数组 常量池:存储常量值)
java的基本数据类型(int long short byte double float boolean char)
byte占几个字节,可以传中文吗(一个字节,不能)
悲观锁和乐观锁的区别(基本概念:悲观锁假定并发冲突会发生,对数据修改采用保守策略提前加锁;乐观锁认为一般情况下不会并发冲突,只有提交更新时才会检查数据是否被其他线程修改过,若修改过就回滚当前事务 悲观锁加锁导致性能开销高适合高并发写的场景,乐观锁不加锁性能高适合低并发读场景)
聊聊volatile、final关键字(volatile 保证线程可见性、防止指令重排 final修饰的变量不能被修改,方法不能被重写,类不能被继承)
线程池怎么实现(常见类型FixedThreadPool、CachedThreadPool、SingleThreadExecutor、ScheduledThreadPool 核心参数:corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler)
介绍下Threadlocal(Threadlocal是多线程中用于解决线程安全的一个操作类,他可以为每个线程分配独立副本从而解决了变量并发访问冲突的问题,Threadlocal同时实现了线程内资源共享)
线程的生命周期(创建、可执行(就绪、运行)、等待、阻塞、死亡)
怎么创建线程(继承Thread类、重写Runnable、Callable接口、线程池创建)
重写接口和继承Thread类的区别(继承Threa类受限于java单继承机制无法在继承其他类,且线程与业务逻辑耦合度高;实现接口可以避免单继承机制,适用于资源共享场景。)

赞一下(0) 踩一下

1 2 3 4   共 4 页