捷信一面是两个技术官,视频面试,面试时长是60多分钟
捷信的面试体验应该是秋招以来面的这些公司中体验最好的一次了,没有之一,两个面试官都非常的nice,人挺好的!
全程下来就是面试官提出一个简单的问题,然后就一直深挖下去,问底层问细节,直到我答不出来就转下一个问题~~~
1. ArrayList和LinkedList的区别,添加一个元素的时间复杂度各是多少,既然ArrayList添加元素效率没有LinkedList高,为什么我们平时用的比较多的还是ArrayList?
2. 将一个Map集合变成栈,如何实现?
3. HashMap的底层数据结构为什么要有链表,我用一个数组不就可以实现了吗,怎么样才会产生哈希冲突?
4. Map集合有迭代器吗?遍历输出Map中所有元素有哪些方法?通过map.keySet()得到key集合,再用迭代器遍历所有元素以及通过map.entrySet()得到存放Map.Entry的集合,再用迭代器遍历所有元素这两种方法每次执行的结果都是一样的吗?(我感觉是不一样的,两种方法得到的都是Set集合,Set集合又是无序的)
5. mysql使用的存储引擎是哪个?默认的数据库隔离级别是?你怎么理解可重复读?对于这个可重复读,面试官给了一个场景:首先,A事务读取库存为1,然后事务B修改库存为0,并提交了事务,这时候A事务再次读取库存(A事务还未提交),那么按照可重复读隔离级别,A事务读取到的库存还是1,那不就出现问题了吗?
6. Mybatis的一级缓存和二级缓存,如果是一级缓存,那么我在同一个SqlSession里面执行了三行语句,第一行,从表中查询数据,第二行,给这个表添加数据,第三行,执行跟第一行一样的查询语句,根据一级缓存,那第三行查询的结果不就是第一次缓存的数据吗,可是表已经增加了新的数据,不就出现数据不一致了吗?(insert语句会刷新缓存!)
7. Mybatis的xml文件中,sql语句可以使用直接使用大于号小于号吗?应该用什么符号代替?
8. Mybatis如何实现批量导入数据?
9. #和$的区别?一般来说,Mybatis的xml文件中查询一个表中的数据,查询结果返回到一个List中,那如果查出来的数据有很多,还可以用List接收吗?
10. 了解哪些jdk1.8新特性?
11. Stream流式编程有什么好处?延迟方法和终结方法的区别是?为什么要有终结方法?Stream流常用的map方法一般用于解决什么问题,参数是哪个函数式接口?filter过滤方法的参数又是哪个函数式接口?
12. Spring最重要的两个概念是什么?怎么理解IOC?将bean注册到Spring容器中有哪些方法?为什么加一个@Component注解就可以将类注入到容器中,直接new 一个对象为什么不好?
13. 熟悉哪些设计模式?静态代理模式的缺点是什么?Spring底层使用到的动态代理是基于接口还是基于子类?涉及到哪个类?
14. Git、Postman、Gradle都使用过是吗,谈一谈你对他们的了解
15. 算法题:遍历文件夹下的所有文件?分别用递归和非递归解决,递归最重要的两个特点是什么?递归的出口你怎么设计,递归调用可能导致栈内存溢出,你怎么处理?
其实问的还不止这些,能回忆起来的就这么多,面试官还会设计很多场景,特别会挖坑,专业性挺强的,一有漏洞就被抓出来了~
由于感觉全程都被面试官牵着鼻子走,所以反问环节我问了面试官对于我今后的学习有什么建议啊,其中一个面试官真的是太用心了,提出了很多建议,他说他们之所以以这种方式问,是想看应聘者对于一个知识掌握到哪个程度,然后也想听听我们对于一个不懂的或者没遇到过的问题是如何解决的,思维很重要,有些问题本就没有答案,就是想看看面试者如何应对这些不懂的问题,如何有条理性的给出他的解决方案;他还建议说看底层源码,或者刷数据结构与算法的题要多去想想为什么用这个设计模式,为什么用这个数据结构,而不要说仅仅去背诵一些面试宝典啊,面试必问啊,我们应该成为创造者,不应该仅仅是工匠~
收获很大的一次面试,也看到自己身上的一些不足,不管过不过一面都值了,但是,还是,要,许愿二面!!!
全部评论
(12) 回帖