江苏某互联网公司 Java 面经-25分钟

江苏某互联网公司 Java 面经

刚面完,写一份面经~,总体来说,可能说既是八股又不是常规八股,因为面试官会追问,不是一些表面的东西去说,面试体验良好.jpg。

1)自我介绍

面试官:可以简单介绍一下自己吗?

2)毕业时间?

面试官:你是什么时候毕业?

我:25届,明年。

3)计划考研?

面试官:后面计划考研吗?

我:我是打算直接就业的,不考研(我也得能考上啊...)

4)Java 面向对象?

面试官:怎么理解 Java 面向对象?

我:万物皆对象,对客观事物进行抽象,比如人是一个父类,然后学生、老师等等都可以去 extends 人这个父类,做一些独特的实现,比如学习和教授课程。面向对象三特性:封装、继承、多态、这边这可以一个特点举一个例子讲。

5)在项目中是怎么利用到的?

面试官:你在项目中怎么利用三大特性的?

我:我用设计模式的例子去举例吧,比如我用到适配器模式,装饰器模式,这些就需要用到继承、封装、多态,这边可以详细讲一下某个设计模式的具体实现,以及作用,比如装饰器,动态给对象添加一些职责,是大盒子套小盒子的原理,然后调用的时候类似与前端的事件冒泡和事件捕获机制。

6)简单工厂、抽象工厂?

面试官:简单工厂、工厂方法、抽象工厂讲一下?

我:简单工厂,传输参数,去创建定制的商品,但不能进行动态的添加,必须要修改原有的工厂类,违背了设计模式的开闭原则(对拓展开放,多修改关闭),工厂方法,为每个不同的品牌、种类创建不同的工厂,每个工厂再自己创建产品,抽象工厂通过一组相关的工厂方法,增加具体工厂和产品族会很方便,符合开闭原则,但同样增加新的产品等级结构会很麻烦,一般还是简单工厂+策略模式+装饰器模式用的多一些。

7)ArrayList 和 LinkedList 迭代遍历 1亿条数据?

面试官:ArrayList 和 LinkedList forEach 迭代遍历 1亿条数据?谁快?

我:面试官这里是假设,实际上根本不用考虑1亿,ArrayList 由于是数组,数组是连续的内存地址,而 LinkedList 是利用指针,不连续的内存地址,连续的内存地址是可以利用缓存的,也就是 CPU 三级缓存,而不连续的内存地址需要去访问主存(物理内存),非缓存(工作内存)。计算机在读取内存中数据时,优先读取缓存中的数据,缓存速度>内存,而相邻的内存地址,计算机可以一次性读取多个数据库并存储在缓存,链表是随机访问的,需要多次从内存中数据,导致缓存中数据被频繁替换,降低缓存效率。为什么按数据块读取?不能单独读取某个地址的数据吗?内存页的概念,Linux 大多数都是 4KB,部分处理器有 8KB、16KB、64KB,4KB 依然是主流(历史遗留问题,不是说内存利用率最佳)。

8)C 语言?

面试官:会用 C 语言开发吗?

我:大一学过 C 语言,然后就没动过了。(原谅我理解不了 C 的有趣之处)

9)Object 的 hashCode 和 equals?

面试官:Object 的 hashCode 和 equals 为什么要重写,假如没有重写 hashCode 会有什么问题?在哪些场景下会发生?

我:当判断两个对象是否相等,先利用 hashCode 判断,因为哈希的效率会比直接 equals 高很多,但哈希冲突时,再用 equals 比较对象内容。没有重写 hashCode 会导致约定的失效,Java 约定 equals 和 hashCode 的返回要保持一致,equals 为true,hashCode 必为 true,不重写 hashCode 可能导致相同对象存储在不同位置。增加哈希冲突可能性。场景:当 Student 类没有重写 hashCode,导致两个内容相同的 Student,放入 HashSet 并没有被去重,HashMap 同样存在放入的问题。

10)HashMap 的 LoadFactor

面试官:LoadFactor 负载因子参数怎么调?什么时候调?

我:负载因子越大,散列表的填充程度越高,插入和查找性能下降,哈希冲突概率变大,负载因子越小,查找和插入性能越高,哈希冲突概率降低,但空间利用率下降,可以根据追求时间还是空间去做相对应的调整。

11)Synchronized 和 Lock 的选择

面试官:Synchronized 和 Lock 级别的锁的区别?

我:Synchronized 是 JVM 级别,随着 JDK 版本升级会不断优化,Lock 是 API 级别,Synchronized 是关键字,Lock 是接口,前者隐式加锁,后者显示加锁,Synchronized 采用的对象锁 ObjectMonitor 监视器,Lock 采用的是 AQS 抽象队列同步器(CLH 锁),synchronized 阻塞式加锁,Lock 非阻塞式,支持中断和超时时间,Synchronized 非公平,Lock 公平,前者悲观锁,后者 CAS 乐观锁,Synchronized 不能获取锁状态,Lock 可以用 tryLock 获取锁的状态,然后就是 Lock 必须在 Finally 中手动释放锁,而 Synchronized 代码执行完毕或出现异常后自动释放。

12)微服务和云原生?

面试官:微服务和云原生了解多少,策略或者使用场景?

我:云原生没有了解过(这块 b 不出来什么东西,就不吹牛了),微服务了解了下基本的五大组件,后面去介绍五大组件和具体的作用,提到微服务服务拆分的好处,后面面试官问 K8S 和 Docker,我只了解过 Docker,K8S 没学过...

13)方向选择?

面试官:你是希望做前端还是后端?

我:肯定是后端,全栈也可以(前端写的一坨...)

反问:技术栈和业务,人工智能公司,大模型,车载、家具....一个组 Java 的传统 SpringBoot,一个 Lua 的 OpenResty。

反问:面试表现和建议,实习生要求不高....

面了 25 分钟,电话面这个时间也正常,下一份面经(腾讯云智)正在准备中~

AI 智能图书馆开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

Github & Gitee 总计已经 1000+ Star,2 W+ 访问!

⭐点赞⭐收藏⭐不迷路!⭐

#软件开发2024笔面经#
面经(打怪升级系列) 文章被收录于专栏

打怪升级...

全部评论
佬别面了,给我们留点活路吧😭😭😭
2 回复
分享
发布于 04-01 23:34 河南
想问问佬怎么背的下这么多八股的。我背的好晕啊,想和佬取经下
2 回复
分享
发布于 04-02 20:43 湖南
联易融
校招火热招聘中
官网直投
niubi
1 回复
分享
发布于 04-16 22:27 陕西

相关推荐

头像
04-08 19:54
已编辑
浙江大学 计算机类
时间:40 min八股 + 项目(30min)1. AOP 在项目中具体作用是什么2. 线程池在项目中具体怎么用的3. 线程池的好处是什么?4. 有哪些常见的线程池,你项目中用了哪个?5. cached 的线程池有什么问题?6. 说一下线程池创建的参数7. 如果先增加线程去达到 max 数量,再加入等待队列,会有什么问题?8. 用到了哪些同步机制?9. 介绍 CAS10. 介绍下其他可以并发的类?11. 介绍 ThreadLocal12. 弱引用有问题吗?12. java 是值传递还是引用传递?13. 为什么用 mybatis?14. mybatis 中 `#` 和 `$` 的区别15. java 基本类型?各占几个字节?16. 介绍下项目里的多机、单机优化17. 介绍下 CAP,对它的理解    - CAP 真的不能共存吗?18. 场景题:下单和库存相关问题?19. 介绍下分布式锁?用什么命令?20. Transactional 注解失效场景?21. Transactional 对错误的回滚默认是什么?    - 自定义异常如果错误会回滚吗?22. MySQL 执行 SQL 流程?23. 身份验证在哪一步?24. MySQL 事务默认的隔离级别是什么?25. 为什么默认用可重复读?26. 订单号、商品名、时间怎么加索引?27. like %xxx 会用索引吗?为什么不会?手撕(10min)SQL:总成绩前三的学生```sqlselect studentId, sum(grade) as totalGradefrom student_gradegroup by studentId, courseIdorder by totalGrade desclimit 3;```算法:LCR 153. 二叉树中和为目标值的路径
点赞 评论 收藏
转发
15 51 评论
分享
牛客网
牛客企业服务