spring相关
1.springmvc 工作流程
2.springmvc mapping种类
3.spirng 工作原理
4.Aop 概念以及spring aop实现的方式
5.spring 启动过程
集合框架
1.hashmap原理
2.concurrentHashMap和hashtable,hashmap的区别
多线程
1.原子类
2.wait和sleep的区别
3.某线程获得锁后能否反复进入被synchronized加锁的代码或方法
4.countdownLaunch的实现原理
5.多线程的学习方法:没有困难制造困难。
jvm相关
1.jvm编译时做了哪些优化(我说我挺懂jvm的,直接给我抛出了这个问题,当时就感觉自己嘴怎么这么贱。。)
2.堆内存如何分配的(当时答得不好,他提示说新生代和老年代是不一样的,面试完才想起来这不就是垃圾回收算法的知识嘛。。还是不熟,死记课本不行啊。。)
数据结构
1.B树,B*树,能否根据所给数组形成B树(当时都忘了B树是啥样的了,只记得可以做索引。。平时一定要来回翻看,不然就会感觉到书到用时方恨少了。。)
2.红黑树原理,作用
3.堆排序(要能写代码,当时怂了说可以试试,虽然复习了一下但是记得不牢)
Java基础
1.Object类的常用方法
2.hashCode()的作用
3.equals和==的区别
Mysql
1.Mysql索引数据结构
2.Mysql的DB种类,区别,各有什么有点
3.Mysql调优
Redis
1.redis应用场景
2.redis数据类型
3.redis的底层原理
4.redis是单线程还是多线程
其他
1.tcp三次握手
2.netty的实现原理(也是当时嘴贱了,说自己会用netty,但是已经好久没用了。。)
3.如何构建一个类似微博的发布订阅系统(面试官大哥循循善诱,但最后都是大哥说出来的。。战战兢兢)
4.zookeeper的作用,原理(分布式服务注册和发现)
算法题
1.输入:一个无序数组,长度为n。
输出:随便一个可以拆成两个数组其他成员的值。
例子:输入:{2,3,1,3,9,5} 输出:5
思路:可用map做,从后往前扫描,时间复杂度为O(n)
2.输入:一个大小为n的数组,值域为[0,n-1]
输出:找出一个重复的值并返回
例子:输入:{3,2,5,1,2,8} 输出:2
思路一:可用一个长度为n的char数组,其值代表原数组中的等于此下标的值出现的次数。时间复杂度为O(n),空间复杂度为O(n)。
思路二:可以通过对比当前值和以当前值为索引的数组值是否相等,若不相等,赋值给以当前值为索引值的位置,将原位置的值按同样逻辑进行迭代,最后相等即返回。
3.输入:大小为n的数组,其他不规定
输出:出现奇数次的唯一的一个值
例子:输入:{1,1,2,2,3,4,4,5,5} 输出:3
思路:用异或的特性,一个数异或自己等于0
4.上一题的变形,其他数都出现三次(可从位运算入手)
总结
1.牢牢把握住基础知识。面试官其实说了对应届生的要求就是基础知识要牢固(操作系统,算法,数据结构,网络,语言本身),对于其中的基础算法和数据结构,懂原理,能手写是基本,若写不出来为减分项。
2.手写代码能力要加强。其中小米面试很独特,算法几乎都要手写,不管难易。其他的一些也一样,但是要求会松一点。不过这是一个趋势。
3.把使用的工具深入理解。不能过于浮于应用的表面,应当深入理解原理。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!