此面试题为企业招聘面试题中摘取
1、abstract class和interface有什么区别?什么时候用抽象类?什么时候用接口?
答:1、抽象类可以有不是抽象的方法。接口中所有的方法都是抽象的。
2、抽象类是单继承。接口可以多继承。
3、继承抽象类可以不用实现里面所有的方法。实现接口必须要实现里面所有的抽象方法。
4、抽象类可以包含实例变量。接口中都是常量。
当用于关系比较密切的对象时用抽象类,当为不相关的类提供通用功能时用接口。
2、String,StringBuffer, StringBuilder的区别?
答:String是不可变的;StringBuffer是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer。StringBuilder是从 JDK 5 开始提供的类,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
3、重写和重载的区别?
重写:发生在父子类之间,方法名相同,参数的类型、个数、顺序相同,返回值相同,访问权限不能更封闭,抛出异常不能宽泛;
重载:发生在同一个类中,方法名相同,但是参数不同(类型不同或个数不同或参数的顺序不同),返回值可以不相同。
4、接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类?
答:接口是可以继承接口的并且可以继承多个其它接口;抽象类可以实现接口中的方法;抽象类可以继承实体类。
5、面向对象的特征有哪些方面?
答:1)抽象2)继承3)封装4)多态性
6、构造器Constructor是否可以被继承?是否可以被Override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
7、Error和Exception有什么区别?
答:error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;
exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。
8、常见异常有哪些?
NullPointerException:当操作一个空引用时会出现此错误。 NumberFormatException:数据格式转换出现问题时出现此异常。 ClassCastException:强制类型转换类型不匹配时出现此异常。 ArrayIndexOutOfBoundsException:数组下标越界
9、创建线程有几种方法?实现同步有几种方法,都是什么?哪种效率更高?
答:1、继承Thread类2、实现Runnable接口。
synchronized关键字,一种是同步方法,另一种是同步代码块。锁代码块效率更高。
10、阻塞一个线程都有哪些方法?分别有什么区别?
答:sleep()和wait()。
sleep是线程类(Thread)的方法,wait是Object类的方法。
sleep导致此线程暂停执行指定时间,到时后会自动恢复;wait方法导致本线程放弃对象锁,只有调用notify方法,本线程才进入运行状态。
11、同步和异步有何异同?
同步:上公交,排队
异步:同时运行,互不干扰
12、阐述一下Collection接口包含哪些子集?分别有什么区别?实现类分别是什么?
list和set。List:有序,可重复。Set:无序不可重复
list实现类:ArrayList----按顺序存放数据的数组 LinkedList-----按顺序存放数据的链表
Set实现类: HashSet----根据HashCode()和equals()方法来判断是否有重复TreeSet------通过实现Comparable和Comparator接口而具有排序功能的集合
13、什么是Map?实现类是什么?有什么区别?遍历Map有几种方式?
Map中存放是Key和value的键值对。实现类是HashMap(查询速度快,非线程安全的)和TreeMap(查询速度慢,元素的排列顺序是不固定的)和Hashtable(线程安全的,效率慢)。
遍历key,遍历value,遍历entry键值对。
14、Java中都有哪些设计模式:
Factory(工厂模式),Singleton(单例模式),Proxy(代理模式)等。
15、JAVA中常用的XML解析技术有哪些?区别是什么?
答: DOM、SAX 两种方式。
DOM:DOM是基于XML文档树结构的解析。优点:整个文档树在内存中,便于操作。缺点:处理大型文件时其性能下降的非常厉害。
SAX:SAX是基于事件流的解析。优点:不用事先调入整个文档,解析速度快, 占用内存少。缺点:不是持久的,事件过后,若没保存数据,那么数据就丢了。
16、什么是HTML?
超文本标记语言。
17、文本元素包括什么?
标题元素 段落元素 列表元素 分区元素 行内元素
18、request对象主要有哪些方法?
setAttribute、getAttribute、getParameter、getRequestURI
19、什么是JDBC?里面都有哪些接口?过程是什么?
是一个标准数据库访问接口。
Connection、Statement、PreparedStatement、ResultSet
过程:1、加载驱动2、建立连接3、创建Statement4、执行sql语句5、处理结果集6、关闭连接
20、什么是死锁?产生死锁的条件是什么?怎么处理死锁?
如果一个进程集合里面的每个进程都在等待这个集合中的其他一个进程(包括自身)才能继续往下执行,若无外力他们将无法推进,这种情况就是死锁。
(1)互斥条件 (2)请求和保持条件 (3)不可剥夺条件 (4)环路等待条件
处理办法:(1)通过设置一些限制条件,去破坏产生死锁的必要条件。(2)在资源分配过程中,使用某种方法避免系统进入不安全的状态,从而避免发生死锁。(3)如果发生死锁,采取一些措施,将死锁清除掉。
21、input标签都有哪些属性?
name,value,type,
22、什么是JavaScript?
JavaScript是嵌入式HTML中浏览器中的脚本语言。
23、JS如何获取对象?
1.document.getElementById
2.document.getElementByName
24、什么是jQuery?
jQuery是一个优秀的JavaScript框架,一个轻量级的JS库,它封装了JS、CSS、DOM,提供了一致的、简洁的API。
25、jQuery如何获取对象?
$("#id")
26、JSP有哪些指令?
1.page指令 2.include指令 3.taglib指令
27、JSP页面中的Java代码写在哪?
-jsp表达式 -jsp小脚本 -jsp声明
28、JSP的内置对象及方法
request、response、out、pageContext、Session、applicaton、
config、page 、exception
29、说出Servlet的生命周期?
1、实例化2、初始化,调用init方法3、调用service方法4、销毁调用其destroy方法。
30、什么是Ajax?
Ajax是一种用来改善用户体验的技术,其实质是,使用XMLHttpRequest对象异步地向服务器发请求。
31、发送异步请求的步骤?了解
1.获取ajax对象 2.设置回调函数 3.创建请求 4.发送请求
32、什么是json?
Json是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Json完全独立于语言之外,但语法上借鉴了JS。
33、String中常用的方法?
IndexOf、substring、trim、charAt、valueOf
34、String 和StringBuffer的区别?
String是final的,提供了数值不可改变的字符串。StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。
35、StringBuffer和StringBuilder的区别?
StringBuffer支持并发操作,线程安全的,适合多线程使用。
StringBuilder线程不安全,但其在单线程中性能比StringBuffer高。
36、StringBuilder类的常用方法?
append():追加字符串 insert():插入字符串
delete():删除字符串 replace():替换字符串
reverse():字符串反转
37、启动一个线程是用run()还是start()?
启动一个线程是调用start()方法。
38、部署一个web应用的步骤是什么?
答:1.将web应用放到Tomcat服务器的Webapps包下,
2.启动服务器
3.在地址栏中输入http://localhost:8080/应用名/
39、forward 和redirect的区别?
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所session,request参数都可以获取。
41、abstract的method是否可同时是static,是否可同时是synchronized?
都不能
42、数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。String有length()这个方法。
43、构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写,但可以被重载。
44、char型变量中能不能存贮一个中文汉字?为什么?
能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
45、页面间对象传递的方法
request,session,application,cookie等
46、java中实现多态的机制是什么?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
47、什么是java序列化,如何实现java序列化? 了解
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
48、是否可以从一个static方法内部发出对非static方法的调用?
不可以,如果其中包含对象的method();不能保证对象初始化.
49、说出一些常用的类,包,接口,请各举5个
常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer
常用的包:java.lang java.awt java.io java.util java.sql
常用的接口:Remote List Map Document NodeList
50、在一个千万级的数据库查寻中,如何提高查询效率?
a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
b. 并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引
c. 避免频繁创建和删除临时表,以减少系统表资源的消耗。
d. 应尽量避免在 where 子句中使用!=或<>操作符、使用 or 来连接条件,否则将引擎放弃使用索引而进行全表扫描。
e.尽量不要使用模糊查询
f. 任何地方都不要使用 select * from t ,用具体的字段列表代替“*”。
51、什么是 SpringAOP 和Spring IOC?
AOP:面向切面,调用者和被调用者之间的解耦
IOC:控制反转,控制指的就是程序相关类之间的依赖关系
52、介绍一下 springMVC 的工作原理
1).spring mvc 所有的请求都提交给 DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。
2).DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller.
3).DispatcherServlet 将请求提交到目标 Controller
4).Controller 进行业务逻辑处理后,会返回一个 ModelAndView
5).Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指定的视图对象
6).视图对象负责渲染返回给客户端。
53、什么时候调doGet()方法?什么时候调doPost()方法?get 和 post 的区别?
Form表单中的method属性里用post就调doPost()方法,用get调doGet()方法。
1)Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传数据;
2)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的所有操作对用户来说都是不可见的;
3)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输大量的数据,所以在上传文件只能使用 Post;
54、什么是JSTL?写出熟悉的JSTL标签。
Java标准标签库
55、写一个子查询?
select * from emp where sal>(select avg(sal) from emp group by empno)
56、模糊查询使用什么关键字?
like
57、数据库中用于累加的函数是什么?
sum和count
58、数据库中排序用什么?分组用什么?
order by 、group by
59、说出几个常用的约束?
主键、外键、唯一、非空、检查
60、java和数据库中分别怎么格式化日期?
Java中:Simpledateformate类的 formate方法
数据库中:to_char或者to_date
61、怎么去除字符串的重复信息?
distinct
62、举出几个常用的聚合函数?
avg()、sum()、count()、max()、min()
63、修改表结构,添加一列信息?
alter table emp add(empno number(2));
64、修改表结构,删除一列信息?
alter table emp drop(empno);
65、如何进行分页?
使用rownum伪列
Select rownum,id,name from account where rownum<=3;
66、举出几个常用的IO流?
低级流:字节流FileInputStream、FileOutputStream
高级流:字符流、BufferedWriter、BufferedReader、PrintWriter
63、创建对象有哪几种方式?
4种:1、用new语句创建对象2、运用反射newInstance()方法
3、调用对象的clone()方法4、运用反序列化调用readObject()方法。
64、怎么引入一个js文件?怎么引入一个css文件?
在script中使用Src,使用link
65、什么是el表达式?
是一套简单的计算规则,用于给JSP标签的属性赋值,
也可以直接输出。
66、什么是反射?优点是什么?
java通常是先有类再有对象,有对象我就可以调用方法或者属性。反射其实是通过Class对象来调用类里面的方法。通过反射可以调用私有方法和私有属性。大部分框架都是运用反射原理。
反射的优点是:体现在它能运行时确定类型, 绑定对象。 动态编译最大限度发挥了 java 的灵活性, 体现了多态的应用, 降低类之间的藕合性。 一句话, 反射机
制的优点就是可以实现动态创建对象和编译。
67、使用MVC的目的是什么?优点,缺点各是什么?
使用MVC思想来设计软件,最根本的目的是为了实现模型的复用。
1)优点:①可以实现模型的复用。
②模型或者视图发生改变,不会相互影响。
③方便测试(比如,将业务逻辑写在Java类里面,可以直接测试,如果写在Servlet里面,必须要先部署才能测试)。
2)缺点:使用MVC后,①会增加设计的难度。
②代码量也会增加。③相应地也会增加软件的开发成本。
68、什么是状态管理?
将浏览器与Web服务器之间多次交互当作一个整体来看待,并且将多次交互所涉及的数据保存下来。
69、什么是JSON?
是一种轻量级的数据交换技术规范。
数据转换:将数据转换成一种中间的,与平台无关的
数据格式(比如Xml或者JSON字符串)发送给另外一方来处理。
70、在java中怎么设定时间的格式?
用SimpleDateFormat里的format方法
71、什么是XML?都可以运用在哪些地方?怎么读取 XML文件?
答:指的是可扩展标记语言。可以用在配置servlet路径如web.xml,spring配置文件如applicationContext.xml,myBatis连接数据库配置文件spring-mabatis.xml,mybatis编写sql语句的配置文件User.xml。
创建SAXReader对象读取XML文档。
72、查看表结构?
答:DESC
73、修改表名?
答:rename 表名 旧名 to 新名。
74、oracle和mysql使用上有什么不同?
答:1)oracle定义数字用number,mysql定义数字用int
2)oracle分页查询用rownum,mysql分页查询用limit
3)oracle有序列,视图,约束,mysql没有
创建一个序列:create sequence 序列名字 start with 1 increment by 1;
创建一个视图:create or replace view 视图名字 as + 一个查询语句。
75、JDBC连接oracle和连接mysql有什么不同?
答:1)驱动包不同,连接oracle用ojdbc,连接mysql用connection-mysql
2)加载的驱动类不同
3)连接参数不用,oracle端口号是1521,mysql端口号是3306
76、Statement和PreparedStatement用哪更好?为什么?
答:用PreparedStatement更好。
* 可以避免SQL注入现象
* 可以提高多次发送相同SQL语句的性能
* 增强SQL的可读性
77、什么是“事务”?事务的特性是什么?
答:数据库中保证交易可靠的机制。事务默认是自动提交的true。
原子性、一致性、隔离性、持久性
提交事务:commit
回滚事务:rollback
78、什么是批处理?
答:发送到数据库作为一个单元执行的一组更新语句。
addBatch()方法和executeBatch()方法
79、web三要素?
答:浏览器、服务器、HTTP协议
80、HTML都有什么标签?
答:。
里包含
里包含:超链接、:表格、