斗鱼秋招面试过程(未写 完待续)
Ⅰ、总体流程
①、9.15号:笔试+三轮技术面试(从下午1:30---6:00,历经四个半小时。部门老大不在,后来约了在9.19上午继续第四面);
②、9.19号:
(已下过程,凭回忆叙述,不同部分均有所遗漏问题)
Ⅱ、具体过程
笔试:
下午一点半到公司,填写个人信息,然后笔试题做了大概快2个小时,题目是(题目有点忘了,大致如下可能不够具体,有几个没写):
1、Java基本数据类型变量和引用类型变量有哪些?谈谈个人的对他们的理解及区别?
(顺便谈了下他们在JVM上的存储的不同)
2、抽象类和接口区别?抽象类和普通类区别?谈谈个人理解?
3、字符流和字节流分别继承了哪些类?谈谈它们有什么区别?
4、创建对象有哪些方式?
5 、(忘了题目)
6、有两个线程T1,T2,要求T2在T1执行完之后或T1执行超过10秒后(无论此时T1是否执行完)在执行,如何实现?
答:(主要考察的多线程t.join()方法的使用)
7、(一道复杂的sql连接查询题目,有点难度,题目有点长,不详述了)
8、用html和javascript实现一个select,当点击选中“admin”选项时,弹出对话框,选择确定将 select内容显示为“admin”,否则还原上一步的内容?
9、字符串版半反转,如:“12345”-->"21354".
10、对一段数字排序,排序算法、我写了个快排和桶排序。
11.....(有些记不起来了).
总结:整体来说笔试题目表较简单,注重基础,随后等待了一段时间安排接下来的面试。
一面:
1、自我介绍
2、介绍下自己做过的项目,在科大讯飞实习做了哪些东西?
3、集合熟悉吧?介绍下熟悉的集合?
答:我先说了HashMap和ConcurrentHashmap,主要从线程安全性和底层实现的原理说起以及各种操作底层是如何设计的blablala.......
4、那说下HashMap、HashTable、ConcurrentHashmap这三者区别?
答:着重说了HashTable的实现原理,在做对比.....
5、说下ArrayList和LinkedList你的了解?
答:先分析了他们的各种操作时间复杂度,然后再说了具体的底层实现原理,后边着重说了ArrayList的扩容问题。
6、假设遍历ArrayList,那如何对他进行遍历时进行删除操作呢?
答:①使用迭代器,用迭代器来删除指定的对象:Iterator itr = list.iterator(); for( Objct obj : list ){ itr.remove(obj)} (主要考察迭代器,如果用了迭代器,若用增强版for循环直接拿list对象进行remove()操作会造成迭代器“快速失败”,抛异常);②使用非增强版的for循环,直接利用list进行删除(这种方法会造成数据异常不建议使用)
7、如果可以利用额外的空间,不需要想太复杂,不使用上述这些方法你如何操作呢?
8、说下你项目中印象最深刻地方?
答:(我的项目比较水,我就扯sql优化,redis及他们使用场景,和一些业务)
9、为什么redis用在了公告这里?
10、项目中用了spring,谈谈你对spring的理解?
答:(说的滚瓜烂熟了,就说了解耦、IOC、AOP原理以及应用场景)
11、Spring源码有没有读过?
答:说了AOP源码,着重了下InnovationHandler,还扯了下AOP实现中动态代理jdk和cglib两种方式,比较了他们的优缺点。
12、你之前说Spring解耦具体在框架组合里在哪里体现了?
答:有介绍了一遍IOC的依赖注入,说了这样的好处。
13、IOC里边是如何实现的,你如何理解?
答:大致说了下,通过配置,容器运用了工厂模式,通过配置通过反射,自动“生产”对象,然后装配给指定地方blabla......
14、你上边说了注解,那 IOC注解有哪些?他们有什么区别?你实习公司用注解还是xml?
答:主要说了@autowire和@Resouce,前者默认按照类型查找对象,后者默认按名称,名称找不到,按类型。还扯了了下注入方式。。。
15、那现在如果有一个接口他有两个实现类,你按照autowire注入,这样按类型不行啊,你怎么办?
答:(应该是byname和@Qualifier("xxx")结合用)
不用这个呢?(这个问题有点模糊)
16、上边你说了注入方式有几种,那 IOC的注入方式有哪些呢?
17、你项目里用过Mybatis和hibernate这两者有哪些区别呢?
答:mybatis没有dao类,sql查询是记录在xml文件,而hibernate是完整的类...(很久没有研究过orm框架了,下去需要补一下)
18、Spring中容器中对象是单例还是多例的?
19、对象单例和多例可能会出现什么问题?
20、servlet是单例还是多例?会不会造成线程安全?如何处理线程安全?
21、struts2的action默认是单例还是多例的?
(上边3个问题说的比较混乱)
22、SpringMVC或者struts2的从前端传给action的参数进来是怎么存放在哪里的?
答:(SpringMVC的action默认是单例的,会造成线程安全所以最好不要存在属性变量,存入形参能够保证线程安全,而struts2的action默认是多例的,所以可以存在属性变量里边)