图图的第一次视频面试(ૢ˃ꌂ˂⁎)

秋招都快结束了,我才迎来了人生的第一场视频面试!
确实是紧张了一天,晚上4点半才叫号叫到我,哈哈哈~~
海康威视的一面是技术面,感觉面试官都还挺高效的,很会把控时间,因为群里6个面试官一天要面100多个人,差不多一人7-8个问题,时间20分钟左右!
今天主要是想复盘一下,整理一下自己答不上来和答得模棱两可的问题。

面试官: 先自我介绍一下吧~
我: 啊~ 我叫xxx,籍贯xxx,来自xxx学校。。。


面试官: 看你项目有用过ssm框架,那你就简单介绍一下框架最核心的两个概念吧~
我: 恩,好的。spring框架的两个核心是IOC和AOP。IOC控制反转,说的是将程序代码的控制权反转给了spring容器,spring容器使用依赖注入来管理应用程序的组件,对象的创建和查找也是由容器控制。IOC的实现原理是工厂模式和反射机制。 AOP面向切面编程是一种思想,能够让我们在不影响原有功能的前提下,为软件横向扩展功能。它的实现原理是静态代理和动态代理。


面试官: 那你说说工厂模式的优点吧!
我: 耦合性低,符合开闭原则(我说的还不是开闭原则,当时就记得对扩展开放,对修改封闭,面试官问我这是什么原则,我说我一下子想不起来。。最后面试官回答了,还问了我还记得其他什么原则吗?这里补充一下:
开闭原则、里氏替换原则、依赖倒转原则、接口隔离原则、单一职责原则、迪米特法则、合成复用原则)

可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。
优点:用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。 典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。
缺点:类的个数容易过多,增加复杂度。增加了系统的抽象性和理解难度。抽象产品只能生产一种产品,此弊端可使用抽象工厂模式解决。


面试官: 对动态代理有了解吗?(我直接说没有,太难为我了)那多线程有用过吗?了解的多吗?(哈哈,我又说没怎么用过,了解不多)Java集合呢?
我: 这个我有用过。
面试官: 那你说说都有哪些集合类吧?
我: list、map、set。然后ArrayList、LinkedList、HashMap、HashTable、HashSet还挺多的。
面试官: 你知道ArrayList和LinkedList的区别吗?
我: ArrayList的底层实现是线性表,LinkedList是链表。前者的访问和查询十分方便,但添加和删除的时候效率很低。后者的优势是删除和添加的效率很高,但是随机访问时效率低。


面试官: ArrayList怎么删除一个元素呢?
我: remove方法。
面试官: 怎么遍历一个集合呢?
我: fori、foreach都可以。tostring方法都可。(现在才反应过来可能是考我iterator。。唉)。先创建一个list的迭代子iterator,使用迭代子的hasNext方法。
面试官: 怎么遍历hashmap呢?
我: hashmap的底层实现是数组+链表。先遍历数组,再遍历链表。(感觉自己没有把意思说明白)

第一种遍历方式,采用for遍历key值,然后通过key去获取hashmap中的数据。
for(String key:map.keySet()){
System.out.println("Key: “+key+” Value: "+map.get(key));
}
第二种遍历方式,采用Iterator 把hashmap中的数据放到迭代器中,然后用while循环把迭代器中的数据都读出来。
Iterator map1it=map.entrySet().iterator();
while(map1it.hasNext()){
Map.Entry entry=(Map.Entry) map1it.next(); System.out.println("Key: “+entry.getKey()+” Value: "+entry.getValue());
}
第三种遍历方式,采用for循环遍历hashmap中的数据,使用方便,但是数据量小时好用,如果数据量大的话非常消耗性能。
for(Map.Entry entry: map.entrySet()){ System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
}
第四种遍历方式,采用for循环遍历value,但是这种方式不能获取到key值。如果只是显示value值可以采用这种方式。开发中使用的相对比较少。代码如下
for(String v:map.values()){
System.out.println("The value is "+v);
}


面试官: 写过SQL吧?分页会吗?
我: mysql的分页是用的limit,后面带俩参数,一个是从哪一页开始,一个是页数。
面试官: resultmap与resulttype有什么区别?
我: 我一脸 ??? 单词都没听出来,听出来又不记得是什么了。。然后就说不会,已经忘记了。。

1、resultmap:mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap。
2、resulttype:resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。

面试官: where有用过吗?
我:。。。。我单词都没反应过来。等我反应过来的时候,我误解了,我以为是SQL语句里面的。。。。哈哈哈
面试官: 你的项目做了多久了?
我: 今年3月份写的。
面试官: 那中间6个月,你就没有写代码吗?
我: 我一直在学习其他知识,然后看看面经。。。
面试官: 看六个月的书,这不每天把自己看瞌睡了 ?
我: 我不好意思的笑了,确实。。。哈哈哈哈
面试官: 那你对海康威视有什么想要了解的吗?
我:(我一脸懵逼,,不知道问啥,但是又不能不问,我就急中生智,问了一下)我想知道你们公司今年大概招多少人,我看今天面试就100多人,会不会很多?
面试官: 今天已经是第六批面试了,问招多少人,这个我也不知道到底招多少人,每个部门需要的人数不确定,我连我自己部门需要多少人我都不知道。
我: 那好吧,我没有问题了,谢谢。


然后面试就这样结束了~~ 哈哈哈,并没有想象中那么难,那么紧张(๑๑)
希望大家也都多多投简历呀~
面试官都挺温柔的,哈哈~

你可能感兴趣的:(面试,spring,java)