最新精心整理Java面试题,透彻分析源码

helloworld_78018081 等级 1675 0 0

一面:70分钟

突击电话面试

正思考着项目功能模块,阿里面试官打来了电话,开始了阿里一面。

阿里面试官自我介绍,介绍了5分钟左右,部门的情况,主要的业务

提问开始

  • 会哪些操作系统 Linux会一点
  • 说一下操作指令,怎么看cpu,看进程,看端口
  • 操作系统进程间通信
  • 追问了一个信号相关的问题,我不知道了。
  • io多路复用,说一说
  • 面向切面编程,说一说那些场景
  • 说说面向切面编程
  • 给一个场景,有很多方法,找出耗时长的方法
  • spring的@autowired的作用
  • mybatis和hibernate的区别
  • C,C++了解吗 (不了解)
  • python用过吗 (没有,我用过matlab(笑))
  • Java类加载器哪几种
  • Java垃圾回收器 我先说了垃圾回收算法--垃圾收集器--比较CMS和G1。
  • 配置过java启动设置吗 没有,我只用过-xms等指令改过JVM参数,和jinfo看参数
  • 说说-XMS,除了-XMS,你还用过哪些指令 -XMX -XSS -XMN
  • 说说java保证线程间同步的方法 Synchronize,reentrantlock,volatile,原子类。。。
  • 说说倒计时器和循环栅栏的区别
  • 说一说为什么要有JIT
  • 平时怎么学习的
  • mysql聚簇索引和非聚簇索引
  • 左外连接和内连接的区别
  • 数据库的读写分离的作用
  • hash和一致性hash的区别,为什么要用一致性hash
  • spring boot
  • 消息中间件了解吗,说说为什么要用消息中间件
  • 项目中的缓存不一致怎么解决的
  • 工作压力大能承受嘛

反问

面试官对我的努力以及学习态度非常认可。

面试官的认可对我而言是莫大的鼓励,希望自己能一路走下去,不管发生什么。

二面:50分钟(P9面)

早上面试官发来短信,约了晚上面试,让我准备一段最能体现我水平的代码。

纠结了一天,最后还是硬着头皮,准备展示自己的项目代码。

首先自我介绍

1 面试官用共享屏幕看了我的项目,项目太过简单。

感觉面试官一下没了兴趣。

2 之后面试官说我简历上写读过SSM框架源码,让我说一说SSM框架的源码

我愣了一下,我说简历上好像没有写吧,SSM框架源码我没读过。

3 问我读过哪些源码

我当时有点懵,第一反应,ha..ha..hashmap

面试官又问,除了hashmap你还读过哪些源码。

想了想,ConCurrentHashMap, ArrayBlockingQueue。。。

那就ConCurrentHashMap吧。你给我讲一讲。

理了下思路,准备开始讲了,面试官让我在IDE上把源码打开讲。

当时差点ConCurrentHashMap都没拼出来。(一紧张,以为是Cur开头的。。。)

之后就一直说Concurrenthashmap源码,面试官主要关注点在怎么是线程安全的。

插入怎么保证安全,读写间会不会影响,怎么保证安全。。。

因为之前项目和SSM框架的源码,我都没能很好的展示。所以concurrenthashmap就尽可能的多说,把自己好的一面展示给面试官。

说了大概40分钟吧,然后面试官说时间差不多了,先这样吧。

反问。

面试官让我多参加开源的项目。

面完一度觉得自己凉了,没有高水平的代码展示,也没读过spring的源码。我的朋友也觉得这次希望不大。之后问了一面的面试官面试结果,没想到过了。

三面:25分钟(P9交叉面)

面试官介绍

面试官介绍自己是中间件部门的,这轮是交叉面。

感觉面试官很和蔼,很有耐心。更多的是让我自己去讲述所学的知识。

自我介绍

项目介绍

说说自己会那些知识

我从头开始说,(集合类,JVM,JUC,Mysql,SSM。。。)

1 集合类用了那些设计模式

2 Juc

说说怎么理解线程安全

之后面试官一直在追问线程安全问题,问我JVM堆上会不会产生线程安全问题。(大概是这个意思)

我这方面确实不太了解。就说了创建对象时候的线程竞争问题。

后来面试官说了,他其实更想我能从底层去说,如果能从底层CPU开始说,那他会非常认可。

反问

面试官很真诚的给了一些学习建议。

他让我加强学习的广度和深度。

先加强广度,多学一些技术知识。(确实我目前的会的技术还很少)

因为学习精力有限,再挑一些方面去加强深度。(我也没能做到在一些方面深入学习)

HR面:20分钟(视频面)

没有自我介绍,直接开始问问题。

hr给我感觉还是比较亲切的。

大概问题:

1 非科班的你对比科班的学生,满分5分,给自己水平打几分(3分),怎样提高剩下的两分。

2 自己的强项和优势(自律,努力,对学习有热情)

3 在阿里每个人都很勤奋,这一点不算什么优势。(做事专注度高,精力旺盛)

4 最喜欢哪一类的人

5 家庭带来的一个影响(可以说好的,也可以是不好的)

6 遇到的心里落差最大的事情(挫败感最强的事情)

7 压力大能承受吗。

hr也很真诚,其实交流过程中,也能引发自己的一些思考。自己的优势,自己的性格,自己的抗压能力,到底是怎样的。

感受:

其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。

特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。

也祝愿各位同学,都能找到自己心动的offer。

总结

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

*另外想要面试题及答案的小伙伴请点击这里自行领取,本人还整理收藏了2021年多家公司面试知识点以及各种技术点整理 *

下面有部分截图希望能对大家有所帮助。

最新精心整理Java面试题,透彻分析源码

收藏
评论区

相关推荐

ConcurrentHashMap
一、关键属性 1. sizeCtl 作用:_transient、_volatile修饰,用于数组初始化与扩容控制,只有一个线程能初始化散列表,但是可以多个线程参与扩容。 | sizeCtl 1 | _表示当前table正在初始化(有线程在创建table数组),当前线程需要自旋等待.._  1是一把锁,哪个线程能把sizeCtl设置成1,哪
2w+长文带你剖析ConcurrentHashMap~!
并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩\_∩)O)。ConcurrentHashMap的设计与实现
J.U.C体系进阶(五):juc
Java - J.U.C体系进阶 ================ 作者:Kerwin 邮箱:806857264@qq.com > 说到做到,就是我的忍道! juc-collections 集合框架 -------------------- ### **ConcurrentHashMap** > **ConcurrentHashMap** 是线程
Java 源码 —— ConcurrentHashMap 读为什么不加锁
最近在复习准备一些面试,偶尔会抽些零碎时间逛一下之前关注的公众号,看看有没有哪些被自己遗漏的地方,或者是一些能补充知识的文章,比如前几天看到一篇讲MySQL插入100W条数据要花多久的文章,点进去看到了久违的 PreparedStatement,顺便复习了一下,原来数据库不仅能识别纯的SQL还可以识别执行计划,PreparedStatement 利用了连接池
Java多线程(二)
\---恢复内容开始--- 一,volatile关键字 当多个线程操作共享数据时,可以保证内存中的数据可见性 相较于synchronized关键字: 1,不具备“互斥性” 2,不能保证变量的原子性 二,原子变量 volatile保证内存可见性 CAS(Compare-And-Swap)算法保证数据的原子性 内存值 V 预估值 A 更新值
Java并发容器——ConcurrentSkipListMap和ConcurrentHashMap
原文:[http://www.cnblogs.com/ygj0930/p/6543901.html](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.cnblogs.com%2Fygj0930%2Fp%2F6543901.html) 一:ConcurrentSkipListMap
Java并发编程之ConcurrentHashMap
### ConcurrentHashMap ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashM
java HashMap、HashTable、ConcurrentHashMap区别
![](https://oscimg.oschina.net/oscnet/aa0d819c31874aa329f899885a37e352a24.png) ### HashTable * 底层数组+链表实现,无论key还是value都**不能为null**,线程**安全**,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,Con
java ConcurrentHashMap和CopyOnWriteArrayList解决并发问题
**ConcurrentHashMap** ===================== 一、hashtable、hashmap、ConcurrentHashMap ===================================== 1、线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率
java hashmap&concurrentHashmap源理
[Java集合:HashMap底层实现和原理(源码解析)](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.cnblogs.com%2Fjava-jun-world2099%2Fp%2F9258605.html) ===================================
java基础 (二)之HashMap,HashTable,ConcurrentHashMap区别
### HashTable: put方法加了同步锁synchronized,底层数组+链表实现,无论key还是value都**不能为null**,线程**安全**,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低。 * 底层数组+链表实现,无论key还是value都**不能为null**,线程**安全**,实现线程安全的方式是在修改
java编发编程之:CuncurrentHashMap
CuncurrentHashMap ================= 通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap
ConcurrentHashMap之实现细节
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁 ,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁 ,我和面试官也因此发生了冲突
ConcurrentHashMap介绍
在进行结构性修改,如put/remove/replace时都需要进行加锁,但是读取并未加锁,并发情况下,由于内存不同步问题,会导致一个线程的写操作并不会立即对另一个线程可见。这里ConcurrentHashMap通过volatile变量的内存可见性特性来保证一个线程的写操作立即被其他线程可见,每个方法在一开始都会读取count这个变量,该变量就是一个vola
ConcurrentHashmap 解析
ConcurrentHashmap(JDK1.7)  ========================== 总体描述: -----   concurrentHashmap是为了高并发而实现,内部采用分离锁的设计,有效地避开了热点访问。而对于每个分段,ConcurrentHashmap采用final和内存可见修饰符volatile关键字(内存立即可见:Ja