阿里面试经验贴

(阿里巴巴供应链部门--Java实习岗)

历时长达一小时二十分钟的面试终于结束了,尽管饥寒交迫,还是奋笔疾书,写下这篇文章共勉。目的很简单,一是对自己成长历程的记录,二是分享一些经验给大家,希望其中的某一点能起到哪怕一丁点的作用。

首先,面试官开场自然就是让自我介绍。在这里要注意说话的语速、语调、以及自己想要突出表达的点,可以把自认为的闪光点展示出来,比如实习经历,比如英语水平等。

然后,开启技术栈的面试。

Java技术栈

由于我在自我介绍时提到应聘的是Java岗,因此面试官直接抛出问题:“你对Java这门语言了解的深度是多少”,“是否看过JDK的源码”(当场傻眼...)。如果回答看过,好,进坑了,因为面试官会继续追问:“那来说一下都看过哪部分”(大型懵逼现场)。卡壳了,好,引导来了,“比如Java的集合有看过吗”,于是大胆引出HashMap。好,又进坑了,“那咱们聊一下HashMap,首先说一下它的原理吧,它是以一种什么样的数据结构来实现的”(划重点!!!HashMap是几乎所有面试官的最爱,没有之一

(后面废话不多说,尽量上干货)

1.HashMap的数据结构——引出Java7跟Java8的区别

2.在什么情况下会做一个链表到红黑树的转换

3.除了数据结构之外,Java8跟Java7在HashMap上还有什么不同

4.扩容的过程,在什么情况下会扩容

5.扩容机制中的capacity初始值为什么是16,可不可以自定义成15,为什么一定要是2的指数次方

6.简单介绍一下hash算法,它的核心性能,或者说判断一个hash算法好坏的指标是什么,indexFor()函数的实现

7.HashMap为了解决什么问题?——引出哈希碰撞

8.介绍ConcurrentHashMap的数据结构

9.ConcurrentHashMap可以支持多少并发线程

10.ConcurrentHashMap属于JOC下的一个类,对JOC这个包的了解

11.是否用过synchronized,之前是否碰到过并发问题,怎么处理

12.在Java技术栈方面,有没有比较擅长或者深入了解的点,是否从源码上看过一些东西(此处再次提到源码)

数据结构

1.介绍链表的数据结构;对一个链表,怎么判断它是否有环,以及对应的时间复杂度/空间复杂度

2.对时间复杂度/空间复杂度的理解(划重点!!!必问,数据结构的精华

3.算法题:现在有100万个十进制整数,找出其中最小的100个,给出方法,以及对应的时间复杂度/空间复杂度

4.算法题:有一个棋盘,假设这个棋盘由100个方格组成,每个方格都有一个权值,现在有一颗棋子在棋盘的左上角,要走到棋盘的右下角,并且每次只能往右或下方走,不能往回走,求使得最后所走过的路径加权和最小,应该怎么走

数据库

1.对MySQL了解多少——引出必问知识点(划重点!!!事务和索引

2.MySQL用的隔离级别是什么,这个隔离级别下会出现什么问题——引出数据库的并发问题

3.MySQL使用这种隔离级别时,是如何解决幻读问题的(这里可以同步理解其他并发问题的解决原理)

4.MySQL的调优机制,主要是哪些方面的调优

5.在MySQL的InnoDB这个存储引擎下,聚集索引(或者聚簇索引)和非聚集索引这两个概念

6.MySQL中的索引是用什么数据结构存储的——此处应该引出B+树

7.为什么通过索引查询速度会更快一些——此处应该引出二叉树算法

简而言之,对于实习生和应届生,如果没有很厉害的实习经历和科研成果,面试官关注的往往是技术栈层面掌握的深度,这是对一个应聘者在短时间内对其学习能力和未来发展的有效评判标准。

后续会持续更新,争取把面试知识点整理成思维导图。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章