实在智能JAVA实习一面

八股

1.自我介绍

2.说一下java的锁(synchornized + ReentrantLock)

3.在java中他们都被使用到了哪些场景中 哪些组件中

4.concurrentHashmap 1.7和1.8并发上有什么区别(1.7锁分段,1.8锁节点,sychornized + CAS)

5.都是什么锁?(1.7 ReentrantLock,1.8 sychronized)

6.说一下JVM

JVM是java虚拟机,实现了java一次编译,多次运行,实现了跨平台;

JVM 是 Java 程序运行的核心环境,它把 .class 文件加载到内存,进行字节码解释或者 JIT 编译,同时负责内存管理和垃圾回收。

7.说一下垃圾回收机制

这种让你讲一下XX概念,可以先从宏观的角度去讲清楚概念,再展开一些通用的方案,最后寻求面试官建议,可以将一些具体的细节,比如

垃圾回收的话一般我们指的就是一种动态的内存管理机制,在 Java 中是 JVM 这一层负责实现的,常见的 GC 相关的概念大体可以分为这几类

比如如何判断垃圾对象的,如引用计数,可达性分析、三色标记法 balbal

如何对垃圾对象进行回收的算法,标记清除,标记整理 balbal

在 JVM 层不同 JDK 版本,默认的 GC 也会一些差异,常见的 GC 垃圾回收器有 xxx xxx

8.多标、漏标现象了解吗

(多标:原本应被回收的白色对象,被错误的标记成了黑色的存活对象,从而导致这个对象没有被GC,产生了浮动垃圾,影响不大

漏标:原本应该是黑色的存活对象,但是没有被正确的标记上,导致被错误的GC,影响很大

CMS中解决漏标:增量更新,G1中解决漏标:原始快照)

9.如何自定义一个starter

(添加springboot依赖、实现自动配置、创建配置类入口文件)

10.mysql有几种日志

11.所有的存储引擎都有这三种日志吗 (myISAM没有undo redo 只有binlog)

12.这三种日志都是拿来干嘛的

13.你知道redolog的二阶段提交吗

(二阶段提交是为了更新mysql过程中,保证redolog和binlog数据一致性的一种手段

分为三个阶段:prepare阶段、binlog持久话、commit)

14.innodb引擎的索引结构

15.建立一个a,b,c索引,在b + 树上是怎么存储的,或者是它为什么一定要遵循最左前缀匹配原则

(a,b,c联合索引,只会创建一个索引树,叶子节点存放这三个字段+id值,但是是按照a,b,c这个顺序存储的,在构建的时候,会先按照a排序,a相同再按照b,b相同再按照c排序,所以要求你在where查询的时候,要包含最左边索引。)

16.如果一个字段是status 它的值只有0和1,这种情况你觉得要不要加索引

(正常情况下像男女这种字段,数据库中数据量各占差不多一半,加索引后mysql查询的时候因为过滤不掉太多数据,mysql优化器就直接走全表扫描了,这种情况加索引反而会有存储上的压力。

但是假如这两个字段区分度很大,比如任务类型的表,5%的数据都是待执行的任务,95%都是已完成的任务,那我们加索引,还是可以大大提高查询效率的。)

这种情况大部分直接就说区分度不大不走索引了,但是我觉得这种特例说一下可能会加分,当然有的面试官也可能觉得你话多

17.说一下各个版本的http

(http1.0:tcp+短连接,效率很差

http1.1: 默认长连接、请求管道化、新增host字段

http2.0: 支持请求和响应的并发传输、头部压缩+二进制格式提升传输效率、支持服务器主动推送资源

http3.0:传输协议不同,tcp->udp、quic协议建立连接更高效、网络切换时不需要重新建立连接)

18.假设MQ,通过路由方式进行消费,不是广播,由于上游业务流量突增导致消息堆积,怎么处理,注意是生产环境,上游已经疯狂告警了,现在怎么办

(这种线上故障排查整体回答思路:降级->解决->避免

降级:因为是路由形式,可以直接加机器扩容消费者实例,增加消费能力,快速把堆积的任务消费掉。

解决:临时止血解决后,接下来就是排查代码里哪里出现的问题导致的消息积压,比如可以提升消费者消费速度、降低生产者生产速度、清理过期消息、调整配置增加topic

避免:举一反三,故障后问题复盘,组会复盘)

实习部分略

反问:公司做什么的->给企业做rpa,agent

面筋(烤面筋) 文章被收录于专栏

烤面筋~烤面筋~三元一串,五元两串

全部评论
无敌诨号鸭
1 回复 分享
发布于 昨天 21:03 浙江
有些问题写的不对的 有佬有更好的思路的 欢迎评论区指教
点赞 回复 分享
发布于 昨天 16:55 加拿大

相关推荐

07-17 13:09
已编辑
火炉中学 Java
本人27届菜鸡,实习入职四天了,我们组是开发一个教学平台,组长说暑假需求不多,让我慢慢熟悉项目。入职第一天是拿到了文档和一个项目的代码权限,把代码拉下来跑了起来,Maven下了一下午才把依赖下好。后面三天都在一直看代码,发现很多新东西,虽然项目框架基本上也就是我在黑马学的springboot和mabatis那一套,但是有很多别的东西或者一个人做项目没法接触到的点。我不知道我是不是对的,我感觉每天就是顺着前端发的请求看每个业务流程涉及到的东西,看到新东西我就去学,比如什么分布式id怎么生成的,excel怎么导入导出的,缓存级联删除逻辑什么的,我感觉看的很慢因为想搞懂没见过或者不熟悉的东西。我感觉这样下去一周都没法吃透这个项目,但组长人很好,跟我说刚实习多学点新东西,现在就慢慢看就行了,后面会给我发需求。我到底该怎么办,忽略细枝末节赶紧要需求吗,但是我感觉不学新东西很难做有亮点的需求,单做增删改查实习完了又不好包产出,我现在有点想把看懂的技术点包成自己的产出因为做的真的好厉害我自己肯定做不出来,唉我会的还是太少了,现在焦虑得不行,甚至后悔提前实习了,应该把分布式微服务学完再出来的😰我之前就只跟做了外卖和点评,背了一些juc jvm八股,微服务分布式都没学,真让我干活只能做增删改查吧,害怕组长骂我肺雾😭
猫猫头猫头鹰:我不用打开评论区都知道会有啥
点赞 评论 收藏
分享
头像
07-17 14:31
湖南大学 安卓
迷茫的大四🐶:搞不懂为啥呢,本来就是各自的不好的习惯,怎么就不能聊开了各自改正习惯呢
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
3
14
分享

创作者周榜

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