是一家创业公司,公司背后是阿里系的投资,目前公司规模感觉不大,据说今年会扩招
面试官人超级nice,是浙大毕业的大佬,从阿里出来创业的,非常感谢他哈哈
笔试:
1. 进程与线程的区别
资源、调度、系统开销、效率
2. 常用的设计模式,画uml图
写了工厂模式和单例模式
3. 什么是sql注入,如何防止
在表单中恶意输入sql语句
不信任用户输入、设置权限、安全存储等等
4. 水平拦截什么的= =
这个真不知道
5. 如何给图片设置防盗链
不清楚。。
6. 悲观锁和乐观锁
悲观锁:数据处理过程中始终对数据加锁
乐观锁:在数据提交时检查,如果冲突回滚
7. hashtable和hashmap的区别,手写hashmap的put和get方法
区别就从线程安全性和键是否可为null说了下,其他想不起来了,put方法大致写了下,后来是面试的时候口述的
8. 谈谈Spring的优势,理解
然后面试官面试,好多题目不记得了
先是聊了聊学校,成绩,在学校的项目啥的
然后开始面试:
1. Spring Boot和Spring的区别
这个真不太会,我做项目是用到了spring boot,但是只是用到了,从starter.spring.io下的模块框架,我就简单说了下pom.xml 设置dependency依赖
2. GC的算法
说了标记-清除,标记-整理,复制算法,然后面试官问怎么标记,又谈到了引用计数法和可达性分析算法
然后面试官问哪些对象可以作为GC Roots,这个没答上来,记得以前看过,但是实在是想不起来了
答案是:虚拟机栈中引用的对象,方法区中类静态属性引用的对象,方法区中常亮引用的对象,本地方法栈中native方法引用的 对象
3. 从地址栏输入百度地址到得到结果整个的过程
就是计算机网络的各个协议,大体说了下
4. 看到了笔试中的hashmap的代码,说了说怎么具体实现put()方法
一开始判断table是否为空,若不是建立数组
然后判断键是否为null,不是则return putForNullKey(value),说了下放入table[0]中什么的
再通过计算hash(key)和indexFor()找到对应的下标,其中提到了怎么操作,容量为2的幂的好处
然后通过循环遍历找key
若找到了就把原来的value 提取出来,把新的value放进去,返回原来的value
若没有找到就调用addEntry(),然后就说了下扩容啊改变hash方式啊什么的
5. 图的遍历,现在能不能手写出来
说了深度优先和广度优先,回答写不出来了