友邦咨询(成都)- Java开发 一面 面经

1. 英文自我介绍

面试官要求用英文做自我介绍,主要包括个人基本信息、教育背景、技术栈、项目经验以及为什么应聘这个岗位。建议准备2-3分钟的英文介绍,突出自己的技术能力和学习能力。

2. Java面向对象的三大特性是什么?

Java面向对象的三大特性是封装、继承和多态。

封装:将数据和操作数据的方法封装在类中,通过访问修饰符(private、protected、public)控制访问权限,隐藏内部实现细节,只暴露必要的接口。这样可以提高代码的安全性和可维护性。

继承:子类可以继承父类的属性和方法,实现代码复用。Java使用extends关键字实现继承,支持单继承,但可以通过接口实现多重继承的效果。继承体现了"is-a"的关系。

多态:同一个方法调用可以有不同的执行结果。多态分为编译时多态(方法重载)和运行时多态(方法重写)。运行时多态通过父类引用指向子类对象实现,调用方法时根据实际对象类型执行相应的方法。多态提高了代码的灵活性和扩展性。

3. List、Set、Map的区别是什么?

这三个都是Java集合框架中的接口,但用途不同:

List:有序集合,允许重复元素,可以通过索引访问元素。常用实现类有ArrayList(基于数组,查询快)、LinkedList(基于链表,插入删除快)、Vector(线程安全但性能较低)。适用于需要保持元素顺序或需要通过索引访问的场景。

Set:无序集合(LinkedHashSet除外),不允许重复元素。常用实现类有HashSet(基于HashMap,无序)、LinkedHashSet(保持插入顺序)、TreeSet(基于红黑树,自动排序)。适用于需要去重或判断元素是否存在的场景。

Map:键值对集合,key不允许重复,value可以重复。常用实现类有HashMap(无序,允许null)、LinkedHashMap(保持插入顺序)、TreeMap(按key排序)、Hashtable(线程安全但过时)。适用于需要通过key快速查找value的场景。

4. Hashtable和HashMap的区别?

主要区别有以下几点:

线程安全:Hashtable是线程安全的,方法都加了synchronized关键字,但性能较低;HashMap是线程不安全的,性能更好。如果需要线程安全,建议使用ConcurrentHashMap。

null值:HashMap允许一个null key和多个null value;Hashtable不允许null key和null value,否则会抛出NullPointerException。

初始容量和扩容:HashMap默认初始容量是16,扩容时变为原来的2倍;Hashtable默认初始容量是11,扩容时变为原来的2倍+1。

继承关系:HashMap继承自AbstractMap;Hashtable继承自Dictionary类。

效率:HashMap效率更高,因为没有同步开销。

迭代器:HashMap使用Iterator迭代器,是fail-fast的;Hashtable使用Enumerator,不是fail-fast的。

实际开发中,Hashtable基本已经被淘汰,推荐使用HashMap或ConcurrentHashMap。

5. MySQL事务的特性和隔离级别有哪些?

事务的四大特性(ACID):

原子性(Atomicity):事务是最小的执行单位,要么全部成功,要么全部失败回滚,不会出现部分成功的情况。通过undo log实现。

一致性(Consistency):事务执行前后,数据库从一个一致性状态转换到另一个一致性状态,数据的完整性约束不被破坏。

隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务。通过锁机制和MVCC实现。

持久性(Durability):事务一旦提交,对数据库的改变是永久性的,即使系统故障也不会丢失。通过redo log实现。

四种隔离级别(从低到高):

读未提交(Read Uncommitted):可以读取其他事务未提交的数据,会出现脏读、不可重复读、幻读问题。

读已提交(Read Committed):只能读取已提交的数据,解决了脏读,但仍有不可重复读和幻读问题。Oracle默认级别。

可重复读(Repeatable Read):同一事务中多次读取同一数据结果一致,解决了不可重复读,但可能有幻读。MySQL默认级别,通过MVCC和间隙锁解决了幻读。

串行化(Serializable):最高隔离级别,事务串行执行,完全避免并发问题,但性能最差。

实际使用中,MySQL默认的可重复读级别能满足大部分需求。

6. MySQL索引相关知识

索引是帮助MySQL高效获取数据的数据结构,类似于书的目录。

常见索引类型:

主键索引(Primary Key):唯一且不能为null,一个表只能有一个主键索引。

唯一索引(Unique):索引列的值必须唯一,但允许null。

普通索引(Index):最基本的索引,没有限制。

全文索引(Fulltext):用于全文搜索,只有MyISAM和InnoDB(5.6+)支持。

组合索引:多个字段组合建立的索引,遵循最左前缀原则。

索引的数据结构:

InnoDB使用B+树,所有数据存储在叶子节点,叶子节点之间有指针连接,适合范围查询。

主键索引(聚簇索引)的叶子节点存储完整的行数据,辅助索引的叶子节点存储主键值,需要回表查询。

索引的优缺点:

优点:大大加快查询速度,减少IO次数;可以加速表与表之间的连接;使用分组和排序时可以显著减少时间。

缺点:占用存储空间;降低更新表的速度,因为需要维护索引;需要花时间研究建立最优的索引。

7. Thread类中有哪些方法?什么场景会出现线程不安全?

Thread类的常用方法:

start():启动线程,JVM会调用该线程的run方法。

run():线程执行的代码逻辑,不能直接调用,否则就是普通方法调用。

sleep(long millis):让当前线程休眠指定时间,不释放锁。

join():等待该线程执行完毕,当前线程才继续执行。

yield():让出CPU时间片,让其他线程有机会执行。

interrupt():中断线程,设置中断标志位。

isAlive():判断线程是否还活着。

setName()/getName():设置/获取线程名称。

setPriority()/getPriority():设置/获取线程优先级。

线程不安全的场景:

多个线程同时修改共享变量:比如多个线程对同一个计数器进行++操作,因为++不是原子操作,会导致结果不正确。

集合类的并发修改:ArrayList、HashMap等非线程安全的集合在多线程环境下会出现问题。

单例模

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java面试圣经 文章被收录于专栏

Java面试圣经,带你练透java圣经

全部评论

相关推荐

本人双九(一般的985)现在🐻厂实习字节hr两次电联同一个职位的实习,问我考不考虑,第二次说的很恳切🐻厂给的测开,字节给的后端本人还没确定,秋招走大厂还是走央国企,目前暂时偏向稳定,更倾向于在江浙一带工作犹豫的点:1.目前组内氛围好,mt也好,组长也好2.如果再面试,我需要重跑我的项目,再准备+八股+手撕,会很累3.如果准备不充分,怕脏面评过来人告诉你 字节hr 就是这德行面试前对每个候选人特别舔 面完找他问进度就查无此人了哈哈哈哈哈,这几天在xhs上略有了解海捞吧hhh前期很热情,突然很冷淡😁双九这么不自信的吗?我这个实习的准备时间短,感觉在接其他面试被拷打了,项目和技术栈不熟,就没什么自信稳定也挺好呀在面字节前面几家其它的后端面试会好一些哈哈哈哈我同门面字节,一面二面就没有低于1h的,哈人🐻厂留用率?哥们儿你不知道字节是一线大厂里面发面最多的吗,发面试又不是oc,hr再恳切有作用吗现在知道了哈哈哈为啥要犹豫,字节不还是正常面试吗,又不是已经拿到oc了不想脏面评,不过现在也无所谓了,也不准备去大厂现在这么卷,0实习能进的,都是有真本事的测开转后端也不错吧,不过HR虽然舔,面试要求不会放松的🐻厂留用率?听说转正会比较容易?不是特别了解还以为是到hr面了让你去呢,就约个面试能有多诚恳那就赶紧准备啊,看看别人面经,刷八股啥的暂时没有特别想换的准备,大概率all in央国企了字节hr都很热情吧,最近27届暑期开了,也收到几个电话 但是考虑不想脏面评就不面了已经略有了解了,感觉很海捞建议不要脏面评,年后投随便约面666又遇到兄弟了hr是说约年后试一下咯暂时不考虑了hhh双***历都到顶了不是很厉害的9,曾经被嘲过要不等年后吧,不差这一次吧??字节那不是投了就能面吗?一定要面这个岗?打电话也是准备说年后了,年前肯定不行哈哈哈我投的少,我也不知道是不是投了就能面主要怕我面得不好,唉双9干什么测开哈哈哈哈哈,准备实习的时间很短很仓促,收到的后端面试不多,想着先有个实习就走了测开熊是什么厂百度大胆去面吧 我就是不自信加上没后端实习 秋招大厂只投了测开 现在有点后悔,不自信加上项目不熟,我感觉会被拷打所以害怕没事 不会损失啥 等你真的拿了测开就会像我一样从激动欣喜到焦虑前景还有一个就是怕字节脏面评,所以如果接面试肯定也会努力准备一下的如果秋招不满意的话,还能搏一搏春招吧,我身边就有在春招找到不错的岗位的还有就是,emmmm,周围也有面字节的,普遍表示有难度,我觉得我菜
点赞 评论 收藏
分享
时间 2026_0228-19:00_百度(1h)1. 自我介绍2. 代码输出题---🅐 aaa - bbb 垂直高度计算<!doctype html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>p {font-size: 16px;line-height: 1;margin-top: 10px;margin-bottom: 15px;}</style></head><body><p>aaa</p><p></p><p></p><p></p><p>bbb</p></body></html>---🅑 对象方法 + this 指向const obj = {fn1() {const fn = () => {console.log(this);};fn();fn.apply(window);},fn2() {function fn() {console.log(this);}fn();fn.apply(window);},};obj.fn1();obj.fn2();---🅒 Promise + setTimeout 执行顺序new Promise((res, rej) => {console.log(1);setTimeout(() => {console.log(2);res("success");console.log(3);}, 0);}).then((res) => console.log(res));console.log(4);---🅓 作用域链const a = 10;function fn() {const a = 20;test();}function test() {console.log(a);}fn();---3. 第一道题结束问到是否了解BFC4. 讲一下事件循环5. 浏览器输入url发生了什么6. 讲讲回流和重绘7. 讲一下闭包8. 选一个自己项目中遇到的难题,怎么解决的讲一下9. 为什么项目要使用SSR?10. 平时怎么使用AI11. 怎么理解rules?12. 写一个类似于百度搜索页的页面(要求实现分页),共享屏幕(新建a.html的时候面试官说起一个工程来写,然后问可以用AI吗,面试官说什么都可以用,然后我打开了Gemini...)13. 新建工程的时候用了pnpm,问到为什么选择使用pnpm(提到幻影依赖)14. 产生幻影依赖的原理知道吗?15. 手撕:反转链表16. 反问了一些学习建议,说看一下掘金里面大佬分享的文章
查看15道真题和解析
点赞 评论 收藏
分享
头像
今天 09:27
已编辑
苏州大学 Java
面试官真的很有耐心,人非常nice,但问得也是真的很细。面完半小后约HR面。有没有人说说HR面会问啥?【希望能过吧,以前真没想到面个试这么耗精力,这一周感觉都被掏空了】【补充,感觉三面面试官没有针对简历提问,没有问项目有关的东西,所以准备的很多东西都没用上。更偏向于个人的基础知识储备,问的东西比较杂】1.请做一下自我介绍。2.你掌握的数据结构有哪些?3.请讲一下一致性哈希的原理和解决的问题。4.请讲一下Ring buffer(环形缓冲区)的相关内容。5.请讲解一下HTTP状态码的相关分类和含义(如2xx、3xx、4xx、5xx)。【499状态码不知道,并且403状态码还说错了】6.当出现502错误时,该如何排查问题?7.请讲解一下四层网络负载均衡和七层网络负载均衡的区别,以及各自的应用场景。8.请讲一下反向代理的原理和常用工具,以及正向代理的相关内容。【忘了正向代理是啥意思了,尬住】9.进程间通信的方式有哪些?哪种方式效率更高,为什么?10.你实际项目中常用的数据库有哪些?11.请讲一下MySQL主从复制的实现原理(基于binlog、redolog相关)。12.MySQL主从复制中如何保证数据一致性?半同步复制的相关问题是什么?【半同步复制脑抽了,没想起来是什么概念了】13.多个从节点之间出现数据不一致的问题该如何解决?14.你了解的消息中间件有哪些?RabbitMQ、RocketMQ、Kafka这三种消息中间件的区别是什么?15.为什么Kafka在Topic数量小的情况下吞吐率是最高的?16.Kafka和RocketMQ底层顺序写的区别是什么?17.Kafka和RocketMQ在读取性能上的差异是什么,原因是什么?18.Redis中最常用的数据结构有哪些?19.请讲一下Redis中Zset(sorted set)的底层实现和优化策略。20.什么是小哈希和大哈希,二者在查找、插入性能上有什么区别?21.请讲一下TCC分布式事务算法的相关内容,以及它和2PC、3PC的区别。22.3PC相比2PC做了哪些改进,为什么现在基本上不使用3PC了?【没答好,感觉没有答到点子上】23.你在项目中使用的服务发现组件是什么,它的实现原理是什么?【只说了Nacos的原理,其他知道有这个组件,但不知道原理,没实际用过】24.实现服务发现的途径/框架还有哪些?(如ETCD、Nacos、Zookeeper相关)25.你在项目中使用的序列化协议是什么,为什么选择该协议?26.请讲一下GRPC的优势,以及它的底层实现(基于HTTP2、Protocol Buffers相关)。【让我对比Thrift,但我没用过后面的这个】27.长连接的适用场景是什么?哪些场景不适合使用长连接,原因是什么?【被拷打了,应该分析长连接和短连接在资源消耗,延迟等方面,分别适合哪些场景】28.请设计一个评论系统(包括数据库表设计、数据结构、关联关系等)。29.评论系统中如果要查询某视频下前10条顶级评论,该如何优化查询效率(涉及索引、分表、层级设计等)?30.评论系统的数据库查询中,行级锁和表级锁的触发条件是什么,如何避免表级锁?【表级锁有点忘了】31.当评论系统流量较大时,该如何优化表结构和存储关系?32.你为什么想要来大厂实习,希望从实习中获得什么?33.如果你入职后接到一个开发功能的任务,你的具体执行流程是什么?34.你会如何利用AI辅助进行代码开发和优化?35.你的实习周期是多久,是否可以正常到岗,毕业相关事宜是否有安排?36.【反问】想具体知道会做哪些模块的工作?37.【反问】入职后的工作过程中需要对接哪些业务?38.【反问】入职后是否会有导师带教,导师是随机分配的吗?39.【反问】入职后具体的工作模块是自己选择还是分配的?40.【反问】实习生入职后有哪些考核标准?41.【反问】实习生的转正难度如何,转正的评判标准是什么?42. 【反问】今天为什么没有算法题?
牛客解忧铺
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务