论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
职场与人生
›
IT职场那些事
›
互联网大厂Java求职者口试场景及技能问答 ...
互联网大厂Java求职者口试场景及技能问答
一给
论坛元老
|
2025-4-8 22:24:10
|
显示全部楼层
|
阅读模式
楼主
主题
1957
|
帖子
1957
|
积分
5871
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
互联网大厂Java求职者口试场景对话
第一轮提问
口试官:王铁牛,首先问你个底子的,ArrayList和HashMap的区别是什么? 王铁牛:ArrayList是一个有序的数组列表,它存储的是有序的元素集合,通过索引来访问元素,查询速率快。HashMap是一个键值对的集合,它通过键来快速查找值,是非有序的。 口试官:回复得不错。那HashMap的底层数据结构是什么? 王铁牛:HashMap底层是数组和链表大概红黑树,在JDK1.8之前是数组加链表,之后引入了红黑树,当链表长度达到一定阈值(8)时,链表会转化为红黑树,进步查询效率。 口试官:很好。那ArrayList扩容机制是怎样的? 王铁牛:ArrayList在初始化时会有一个默认容量,假如添加元素时凌驾了这个容量,它会进行扩容,一般是扩容为原来的1.5倍。
第二轮提问
口试官:接下来聊聊多线程,线程池的作用是什么? 王铁牛:线程池就是管理和复用线程的,克制频繁创建和烧毁线程带来的开销,进步性能。 口试官:那常见的线程池有哪些? 王铁牛:有FixedThreadPool、CachedThreadPool、SingleThreadExecutor、ScheduledThreadPool等。 口试官:很好,那说说JUC包下的CountDownLatch的作用。 王铁牛:嗯……这个似乎是用来让一个或多个线程等候其他线程完成一组操作的。
第三轮提问
口试官:再谈谈Spring相关的,Spring的IOC和AOP是什么? 王铁牛:IOC就是控制反转,把对象的创建和管理交给Spring容器。AOP是面向切面编程,能在不修改原有代码的情况下,在特定的切点实行额外的逻辑,比如日志记录、事务管理等。 口试官:那Spring Boot的自动设置原理是什么? 王铁牛:这个……就是Spring Boot会根据引入的依赖,自动设置一些默认的组件,但是具体原理我不太清晰。 口试官:MyBatis中#{}和${}有什么区别? 王铁牛:#{}是预编译的,能防止SQL注入,${}是直接拼接SQL,有SQL注入风险。
口试官:最后问你下分布式相关的,Dubbo是什么,有什么作用? 王铁牛:Dubbo是一个分布式服务框架,用于服务的注册与发现、负载平衡等,让差别服务之间可以通讯调用。 口试官:RabbitMQ在项目中一般怎么用? 王铁牛:就是用来做消息队列的,比如异步处理、削峰填谷这些场景。 口试官:xxl - job知道吗,有什么用? 王铁牛:似乎是一个分布式任务调度平台,用来调度任务的。 口试官:Redis的长期化方式有哪些? 王铁牛:有RDB和AOF,RDB是定时快照,AOF是记录操作日志。
口试官:好了,本日的口试就到这里,你回家等通知吧。
问题答案详解
ArrayList和HashMap的区别
:ArrayList是实现了List接口的动态数组,它是有序的,通过索引访问元素,查询速率快,增删元素特别是在中央位置增删时效率较低。HashMap实现了Map接口,以键值对的情势存储数据,是非有序的,通过键来快速查找值,查询效率高,增删元素效率也不错。
HashMap的底层数据结构
:在JDK1.8之前,HashMap底层是数组加链表结构。数组的每个元素是一个链表的头节点,当发生哈希辩论时,新元素会添加到链表的尾部。JDK1.8之后,当链表长度达到8且数组长度大于64时,链表会转化为红黑树,以进步查询效率。红黑树是一种自平衡的二叉查找树,能保证在最坏情况下,查询、插入和删除操作的时间复杂度为O(log n)。
ArrayList扩容机制
:ArrayList在初始化时,假如没有指定容量,会有一个默认容量10。当添加元素时,假如当前元素个数凌驾了数组的容量,就会进行扩容。扩容的方式是创建一个新的数组,新数组的长度是原数组长度的1.5倍,然后将原数组的元素复制到新数组中。
线程池的作用
:线程池可以管理和复用线程,克制频繁地创建和烧毁线程带来的性能开销。它可以控制线程的数量,防止线程过多导致系统资源耗尽。同时,线程池还可以对线程进行同一的管理,比如设置线程的优先级、名称等。
常见的线程池
:
FixedThreadPool
:固定巨细的线程池,线程池中的线程数量固定,当有任务提交时,假如线程池中有空闲线程,则直接使用空闲线程处理任务;假如没有空闲线程,则将任务放入壅闭队列中等候。
CachedThreadPool
:可缓存的线程池,线程池中的线程数量不固定,可以根据任务的数量动态调解。假如线程池中有空闲线程,则直接使用空闲线程处理任务;假如没有空闲线程,则创建新的线程处理任务。当线程空闲时间凌驾60秒时,线程会被回收。
SingleThreadExecutor
:单线程的线程池,线程池中只有一个线程。全部任务都会按照顺序依次被这个线程处理。
ScheduledThreadPool
:支持定时和周期性任务的线程池,可以按照指定的耽误时间或周期实行任务。
JUC包下的CountDownLatch的作用
:CountDownLatch是一个同步辅助类,它允许一个或多个线程等候其他线程完成一组操作。它有一个计数器,在初始化时指定计数器的初始值。当一个线程完成操作时,调用countDown()方法将计数器减1。其他线程可以调用await()方法等候计数器变为0,当计数器变为0时,等候的线程会被唤醒继续实行。
Spring的IOC和AOP
:
IOC(控制反转)
:是一种计划思想,将对象的创建和管理从应用步调代码中转移到Spring容器中。Spring容器负责创建对象、管理对象的生命周期、依赖注入等。通过IOC,应用步调代码只需要关注业务逻辑,而不需要关心对象的创建和管理细节。
AOP(面向切面编程)
:是一种编程范式,它允许在不修改原有代码的情况下,在特定的切点实行额外的逻辑。在Spring中,AOP重要用于实现横切关注点,比如日志记录、事务管理、权限控制等。通过界说切面、切点和通知,Spring可以在目标方法实行前后、抛出异常时等时机实行相应的通知逻辑。
Spring Boot的自动设置原理
:Spring Boot的自动设置是基于条件设置(@Conditional)和自动设置类实现的。Spring Boot会根据引入的依赖,自动扫描并加载对应的自动设置类。这些自动设置类会根据一定的条件(比如是否存在某个类、某个属性是否设置等)来决定是否生效。自动设置类中会使用@Bean注解来创建和设置一些默认的组件,从而实现自动设置的功能。
MyBatis中#{}和${}的区别
:#{}是预编译的,它会将SQL语句中的参数用占位符?代替,然后通过PreparedStatement来实行SQL语句,能有用防止SQL注入。${}是直接拼接SQL,它会将参数的值直接替换到SQL语句中,存在SQL注入风险。因此,在使用MyBatis时,尽量使用#{}来传递参数。
Dubbo是什么,有什么作用
:Dubbo是一个开源的分布式服务框架,用于办理分布式系统中服务的注册与发现、负载平衡、服务调用、服务治理等问题。它提供了高性能、透明化的RPC长途服务调用方案,以及服务的自动注册与发现机制,使得差别服务之间可以方便地进行通讯和调用。
RabbitMQ在项目中一般怎么用
:RabbitMQ是一个开源的消息队列中央件,在项目中常用于异步处理、削峰填谷、解耦等场景。比如在电商系统中,用户下单后,可以将订单信息发送到消息队列中,由其他服务异步处理订单的后续操作,如库存扣减、物流通知等。在高并发场景下,消息队列可以缓存请求,克制瞬间大量请求对系统造成压力,实现削峰填谷的功能。同时,消息队列还可以将差别的服务解耦,使得服务之间的依赖关系更加清晰。
xxl - job知道吗,有什么用
:xxl - job是一个分布式任务调度平台,它提供了任务的调度、管理、实行等功能。可以用于定时任务、批量任务等场景。比如在电商系统中,可以使用xxl - job定时实行数据统计任务,如每天凌晨统计前一天的销售额、订单量等数据。它支持分布式摆设,可以在多个节点上实行任务,进步任务的实行效率和可靠性。
Redis的长期化方式
:
RDB(Redis Database)
:是一种快照长期化方式,它会在指定的时间间隔内对数据进行快照,将内存中的数据以二进制的情势生存到磁盘上。RDB的优点是恢复速率快,由于它是直接将快照文件加载到内存中。缺点是可能会丢失最后一次快照到发生故障之间的数据。
AOF(Append Only File)
:是一种日志长期化方式,它会将Redis实行的每一个写操作命令追加到AOF文件中。当Redis重启时,会重新实行AOF文件中的命令来恢复数据。AOF的优点是数据的完备性和一致性更好,由于它记录了每一个写操作。缺点是文件体积较大,恢复速率相对较慢。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
一给
论坛元老
这个人很懒什么都没写!
楼主热帖
手把手教你如何使用kali破解wifi密码( ...
3.2操作系统(基本分页存储管理的基本 ...
C++面试八股文:std::array如何实现编 ...
嵌入式 Linux 内核驱动开发【The first ...
你真的了解二叉树吗?(上篇) ...
零基础入门 Java 后端开发,有哪些值得 ...
Wireshark学习笔记(一)常用功能案例 ...
软件开发中,如何为你的代码构建三层防 ...
上古神兵,先天至宝,Win11平台安装和配 ...
Kubernetes(K8S) Deployment 升级和回 ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
DevOps与敏捷开发
分布式数据库
linux
移动端开发
快速回复
返回顶部
返回列表