本文记录一下,个人在2015年夏季申请各个公司碰到的面试题。仅供学习和参考。
【JAVA】
1. LinkedList和ArrayList的区别。
答:
1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构;
2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针;
3. 对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据;对于末尾元素,两者的开销差不多。
2. 接口和抽象类
答:
接口是对行为的抽象,抽象类是对整体类的抽象。共同点在于它们都体现了一种抽象思维,模板思维。
区别在于
1. 语法上:
抽象类
(1) 抽象类的成员、方法可以和普通类一样,也可以有抽象方法,抽象方法的修饰符默认为public abstract,便于子类的继承;
(2) 子类继承抽象类则必须实现抽象类的所有抽象方法,一旦继承可以获得抽象类的所有普通成员变量和方法;
(3) 抽象类不能被实例化;
(4) extends关键字;
(5) 单继承;
接口
(1) 接口中可以有成员和方法,所有的成员的隐式修饰符为public static final,方法均为抽象方法,隐式修饰符为public abstract;
(2) implements关键字;
(3) 变相地实现“多继承”,有时比抽象类的使用更加灵活。
http://www.cnblogs.com/dolphin0520/p/3811437.html
http://blog.csdn.net/xw13106209/article/details/6923556
3. Java多线程
(1) 继承Thread类,本质实现runnable接口,只能单继承;
(2) 实现runnable接口;
(1) (2)实现的run()方法,无返回值。
(3) 实现Callable接口,返回一个future对象。
http://blog.csdn.net/aboy123/article/details/38307539
4. HashMap中的equals()和hashcode()方法
http://www.cnblogs.com/jisheng/archive/2011/09/03/2165536.html
【数据库】
1. 左外连接和右外连接的区别。
答:
左外连接:返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回NULL。
右外连接:返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回NULL。
举例
例子:
a表 id name b表 id job parent_id
1 张3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id存在关系
内连接
select a.*,b.* from a inner join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
左连接
select a.*,b.* from a left join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
3 王武 null
右连接
select a.*,b.* from a right join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4
完全连接
select a.*,b.* from a full join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4
3 王武 null
扩展
详解SQL中的连接:http://blog.csdn.net/jiuqiyuliang/article/details/10474221
2. SQL基础知识
http://www.cnblogs.com/CareySon/archive/2010/04/05/1704928.html
3. Group By相关
http://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html
【机器学习/数据挖掘】
1. 常见的分类算法及思想。
http://www.cnblogs.com/tornadomeet/p/3395593.html
2. 过拟合现象的产生及解决方法。
3. L1和L2正则项的区别。
4. 特征降维的方法:PCA/SVD
5. 信息增益和信息增益率的区别。