10万字总结的java面试题和答案:关于Java面试中那些永恒的技术话题
10万字总结的java面试题和答案:关于Java面试中那些永恒的技术话题3.重载和重写(覆盖)的区别?需要注意的是:super和this不一样,不是一个对象引用,是不能像this那样单独使用的!2.this和super的区别?this通常有三种用法:1)本身就代表当前对象 2)this.属性可以访问被和局部变量重名的对象属性 3)调用本类其他重载构造器super通常有两种用法:1) super.方法 访问被子类覆盖的父类方法 2) 调用父类构造器初始化从父类继承的属性
笔者从事教育培训十余年,每年都会有大量的学生从笔者手中走向工作岗位,也许是处于好奇,每次学生面试归来的时候,笔者都会问问这次企事业单位都问了那些问题,留作参考,经过这几年的总结,发现企业单位在面试时候的那些永恒的问题,不敢独藏,特地拿出来和诸位分享一下:
JAVA基础知识永远是面试中问的最多的,总结常见面试问题如下:
1.面向对象三大特征?
这是一个问烂了的问题:封装,继承,多态
2.this和super的区别?
this通常有三种用法:1)本身就代表当前对象 2)this.属性可以访问被和局部变量重名的对象属性 3)调用本类其他重载构造器
super通常有两种用法:1) super.方法 访问被子类覆盖的父类方法 2) 调用父类构造器初始化从父类继承的属性
需要注意的是:super和this不一样,不是一个对象引用,是不能像this那样单独使用的!
3.重载和重写(覆盖)的区别?
请参考以下对比表格
覆盖 | 重载 | |
方法名 | 相同 | 相同 |
参数列表 | 相同 | 必须不同 |
返回类型 | 相同 | 可以不同 |
访问权限 | 大于等于被覆盖方法 | 无特殊要求 |
位置 | 在子类中覆盖父类 | 可以重载父类的,也可以在一个类 |
次数 | 覆盖一次 | 重载多次 |
抛出异常 | 不能抛出更多异常 | 无特殊要求 |
4.抽象类和接口的区别
5.ArrayList和LinkedList的区别?
ArrayList是线性表,可变数组的数据结构,随机访问元素快,插入和删除元素慢
LinkedList是链表的数据结构,随机访问元素慢,插入和删除元素快
6.ArrayList和Vetor的区别?
ArrayList是线程不安全的,Vetor是线程安全的
7.冒泡排序的算法?
呵呵,这真是一个面试考试,居家旅行的一个必备算法。
把Java基础的常见话题说完,然后咱们再来谈谈数据库,可以说面试中除了Java基础数据是问的最多的了,总结常见面试问题如下:
1.内连接和外连接的区别?
这是连接查询的最基本的一个话题:内连接只查询返回满足连接条件的,而外连接查询会把不满足连接条件的也返回
2.SQL1992和SQL1999的连接查询语法的区别?
SQL92的语法简单,但效率较低
SQL99的语法繁琐,但效率较高
3.表和表之间的三种关系?
一对一,一对多,多对多
4.连接查询和子查询哪个效率高?
连接查询效率高,尽量使用连接查询
5.数据库设计三范式?
a)无重复的列
b)属性完全依赖于主键
c)属性不能传递依赖于主属性(属性不依赖于其它非主键属性)
6.索引的作用?
加快查询速度,但是需要注意索引会降低DML速度
7.提取一个表的数据的前N行(TOP N)?
这个需要注意,不同的数据库有不同的写法:Oracle需要用rownum伪列,SqlServer用的是TOP N语法,而MySql则是用Limit语法
8.查询一个结果集,消除重复行?
有同学说,不就是用DISTINCT关键字吗,你可不要上当了,一般问这个问题的时候,大多数是让你不用DISTINCT实现这个功能,怎么样,琢磨琢磨吧,呵呵,至少还可以写出三种写法呢
最后我们再来说说JSP和Servlet基础问题吧,如果你连以下问题都搞不清楚,那么去面试是很容易杯具的:
1.Servlet的生命周期?
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
2.请求转发和重定向的区别?
请求转发 | 重定向 | |
目标范围 | 只能转发到同一个WEB应用的组件 | 可以是同一个WEB应用,也可以是其他站点 |
“/”开头含义 | “/”表示WEB应用程序根目录 | “/”表示整个WEB站点的根目录 |
地址栏显示URL | 请求转发结束后,地址栏URL保持不变 | 重定向结束后,地址栏URL编程重定向目标URL |
请求对象和响应对象 | 只产生一次请求对象和响应对象,资源A和资源B共享相同的请求对象和相应对象 | 会产生两次请求对象和响应对象 |
3.三大范围对象?
request请求对象:一个请求范围
session会话对象:一个会话范围
ServletContext全局对象:一个WEB应用范围
4.get请求和post请求区别?
GET | POST | |
传递数据的方式 | 追加在URL后面 | 在请求正文中作为消息主体一起发送 |
安全性 | 不安全 | 安全 |
数据大小 | 受到URL长度限制,多了丢失数据 | 长度几乎无限制 |
字符集 | 先编码 | 后编码 |
5.MVC设计模式?
请注意不要和软件的三层架构搞混了,MVC是一种设计模式,不是软件架构,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,模型一般写数据访问和业务逻辑,视图用JSP实现用户UI,而控制器用Servlet实现模型和视图的桥梁
好了,洋洋洒洒的说了这么多,其实知识点在于平日的日积月累,而不是临时抱佛脚或者临阵磨枪,以上面试常见问题只是未我们即将到企业中去面试的同学提供一些素材和建议,希望对大家有所帮助,最后祝福去面试的同学一切顺利,马到成功吧。