顺丰校招一二面—Java开发工程师
顺丰一面 2020.8.4
在线视频面试平台,看着像是牛客网的界面,有写代码的地方,我以为要手撕代码,事实上没有。整个面试过程比较快,大概25分钟左右。
- 自我介绍
- HashMap了解多少,简单说说
- 说了一下HashMap的底层链表数组实现,put方法和get方法实现
- 比较两个key是否相同,先判断hashcode方法在判断equals方法
-
- 为什么要重写equals方法和hashcode方法
- HashMap和HashTable的区别
- HashMap线程不安全,HashTable线程安全
- 底层有什么区别没答上来
-
- CocurrentHashMap怎么实现线程安全的
- segment,分段锁
-
- 讲到锁,那什么是乐观锁和悲观锁
- 乐观锁认乐观思想,认为读多写少,倾向于不加锁;悲观锁认为写多读少,任何操作都要加锁,synchronize就是悲观锁
-
- 除了synchronize关键字,还是什么锁
- 可重入锁,实现Lock接口,详细展开
-
- 进程和线程的区别,Java中如何实现多线程
- 实现Runnable接口,继承Thread,有返回值的实现Callable接口
-
- 线程池简单讲讲
- 创建销毁线程耗费资源,引入池化的概念,实现线程复用和管理,这里没展开讲线程池的原理,面试官也没要求继续讲
-
- 关于多线程,volatile关键字有什么作用
- 保证修饰的变量线程之间可见,避免脏数据
-
- 了解过哪些排序算法?
- 常见的冒泡,快排,选择排序,归并,桶排序。我以为要手撕代码,归并排序代码不熟啊,但面试官也没让手写
-
- 数据库了解过吗,说说MySQL数据库,索引、优化、原理?
- 数据库是我的弱项啊,不太了解,只能硬着头皮简单说说事务的隔离级别,面试官也没深入问
-
- 聊聊你的项目
晚上收到二面的短信啦,隔得时间太短了,来不及准备。。。
===========================================================================
顺丰二面 2020.8.5
热乎的二面面经来了,先更正一下之前的错误,面试系统用的是赛码网,有写代码的地方(一二面都没有手撕代码),界面长这样子:
二面依然很快,还没反应过来就结束了,全程15分钟左右吧,聊项目就占了一半时间。
自我介绍
介绍项目
研究生期间做过的项目和建模工具有关(主要用到JavaSE),比较偏工业领域应用吧,面试官应该也不是很了解,主要问了用到的技术栈,项目中负责开发的模块,解释一通
项目的几个细节,因为自己做过的也比较熟,这里说了将近3分钟
JVM的内存模型
JVM内存模型常考吧,我面了几家都问了。
1. 线程私有:虚拟机栈,程序计数器,本地方法栈
2. 线程共享:堆,方法区(JDK1.8之后改为位于直接内存的元空间)
3. 直接内存
JVM的GC了解多少
我主要从触发GC方面回答的:
MinorGC: new出的对象一般进入到堆空间的新生代的Eden区(对象很大会直接放入老年代),如果此时Eden区已满,触发一次MinorGC,将Eden存活的对象连同ServivorFrom区存活的对象一同复制到ServivorTo区,ServivorFrom和ServivorTo区互换,存活下来的对象年龄+1。
MajorGC: 默认情况下,如果此时有对象年龄达到15,将晋身到老年代,如果此时导致老年代空间不够,则会触发MajorGC,回收老年代的垃圾对象。
没有说的太细节,例如MinorGC过程中,如果ServivorTo区空间不够,会直接放入老年区,年龄信息放在对象头部占用4位,所以最大只能是15。GC算法也没提
数据库了解吗,有哪些索引
聚簇索引,好像是B+树实现的?啊,数据库得恶补了,我的弱项啊,好在面试官也没再继续追问。
反问环节
问:如果被录取了,部门就确定了吗,可以重新选择吗?
答:还会根据面试表现重新分配的(是分配,没得选择)
整体上,除了数据库没回答上来,其他的都还可以吧(蜜汁自信),面试官人很好,平易近人,没有板着脸,面试过程也很愉快。
兄弟姐妹们加油呀,去恶补数据库了~
果然啪啪打脸,收到了顺丰的拒信,问的太简单不是好兆头哇。😅
#面经##校招##Java工程师#