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协议 。转载请注明出处!