2016阿里内推面试经验(来自一个女生的面试经验)
阿里面试经验:(具体是哪个面面的我已经不太记得了,以为一面二面太早之前了,我尽力回忆一下)
1. 面:你用过哪些集合类?
我: arrayList linkedlist hashmap vector hashtable hashset treemap, 不过前面三个比较常用,后面的不常用
2. 面 : 那你说说 arraylist 和 linkedlist 的区别?
我:底层: arraylist 底层是数组, linkedlist 是双链表
效率:根据 arraylist 底层数组的特性,查询效率比较高,而增删效率较低,但是也不尽然,如果是在最后一位进行增加或者是删除最后一位元素的话,那么增删效率也是很高的。 Linkedlist 根据底层是双联表的特性,增删效率比较高,但是查询效率比较低,但是头尾例外。
Arraylist 的增删的实现方式(请参照源码说明), linkedlist 的查询的实现方式(参照源码说明)
3. 面: hashmap 底层是怎么实现的?
我:数组加链表。之所以要这样的结构是为了去处理哈希冲突,也就是拉链法)
说到这里,面试官打断了我,问我,还有什么处理哈希冲突的方法?
我:开放地址法以及它的各种变形,就是如果数组中位置已经被占用,那么找它的下一个。依次下去。而变形就是按照某种规律找下一个。
面:什么规律呢?
我:我就记得一个按照 1*1 , -1*1 , 2*2 , -2*2... 这样
大家安静了
我:我有把 hashmap 关于怎么找到 index 的过程说了一遍(参照源码,像这种东西,参照源码来说比较好)
4. 面:恩,那你熟悉什么算法,还有说说他们的时间复杂度?
我:排序和查找算法吗?
面:可以,你说说快排
我:这里我答了快排的思想,但是他要我写代码表示,我口述的时候有点坑坑巴巴,最终说成啥样,我不记得了,貌似不怎么好,突然用口述写代码还有些不适应 , 思想说的还可以,讲了他递归的本质。
5: 面:数据库你用什么数据库?
答: mysql
面:说说事务呗?
答:我说了事务的四个基本特性;说了事务的粒度,还有各种可能造成的情况(读脏,丢失修改,不可重复读,幻读)
6. 面:你做过项目吧?
我:做过
面:什么项目?
我:一个电子商务 o2o 的网站
面:能介绍一下你的项目吗?
我:巴拉巴拉把我的项目介绍了一下(大家项目不同,自己准备好就行)
面:那你这个项目的话在上线之前都做了哪些测试?
我:压力测试,测我的并发访问量。还有就是安全性测试,当然这个来说,我们的网站还很单薄,因为是小型项目,而且是一期版本,所以还是需要改进的。还有就是用户体验度测试。
面:那你能说一下你对于安全性考虑了哪些方面吗?
我:防 sql 注入,防盗链,还有就是跨域攻击,然后依次介绍了一下。(其实我答的很不全面,但是可能是某一个方面说的比较详细吧)
面:效率方面呢(大概是这个意思,我忘了具体的题目了)?
我:我就说了缓存是提优的不错选择,比如浏览器缓存,然后还说了 sql 优化方面的知识。
面:问了一些项目里面的具体的细节,(真的非常细节),因为每个人不一样,所以就不在这里说了)有我的项目里面怎么回话管理的啊,用什么算法加密的等项目里面细节的问题还有项目本身用户体验的问题。
Hr 面:
跟我谈了现在的实习生活,公司有什么好的,不好的地方。我学到了什么知识?我是一个什么性格的人。从小到大遇到过什么巨大的挑战?怎么面对的?还有我的家乡,哈哈。