理论知识总结
J2SE面试题总结:
1.GC是什么? 为什么要有GC?
GC是垃圾收集的意思 对于GC来说,当程创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通
常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对
2. JVM的概念(也是解释JAVA为什么能够跨平台的)
JVM是Java Virtual Machine(Java虚拟机),它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟
各种计算机功能来实现的
Java虚拟机包括一套字节码指令集、组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
3. 面向对象的特征
抽象:把现实中东西用JAVA类来表示:抽象成类,过程抽象(方法),数据抽象(属性)
继承:鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程
称为类继承。
封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的入口,实现信息的隐藏。主要是通过访
问修饰符来完成(private,protected,default,public)
多态:同一种行为,不同的实例表现不同。或者同一种行为,表现也不一样:主要是通过方法的重载和重写
4.类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变
5.访问修饰符的作用域:
6.抽象类和接口的区别:(abstract class和interface有什么区别)
抽象类用 abstract来定义,有抽象方法的类一定是抽象类,反之不成立。即:抽象类中既可以由抽象方法,也
可以有普通的方法
一般抽象类只定义行为。可以作为模板使用。抽象类不能被实例化。抽象方法在非抽象的子类中必须全部实现
。
7.面向接口编程的好处
声明和实现相分离,,程序具有更好的扩展性,维护性比较好。
面向接口编程也是多态的表现
解决了JAVA里面只能单继承的问题
解耦(减少依赖),
8.JAVA语言特点:开源,跨平台最大的亮点。其他的面向对象,GC
9.标识符命名:以字母,下划线,$符开头。后接字母数字下划线
10.类与对象的关系:类是对象的抽象,对象是类的实例
11.重载(overload)和重写(override、overwrite)的区别
Override体现在继承上。覆盖父类的方法叫重写(和父类具有相同的方法名,相同的参数列表,相同的返回
值,访问权限至少要大于等于父类的)
12. String和StringBuffer的区别
String 不可变长度
StringBuffer 可变长度
在使用上:遇到连+的时候,使用StringBuffer,他的效率要比String效率要高。因为String的连+会产生很多
对象。
13.==和equals的区别
答 :==和equals比较引用类型没有区别,比较的是地址值(对象是否相同)。
==可以比较基本类型和引用类型,equals不能比较基本类型
==比较基本类型是栈里面的值是否相同
String的equals方法重写了Object的equals方法,它的这个方法比较的不再说是对象地址,而是比较的值是否
相等(内容)
14 Collection和Collections的区别
collection是集合类的上层接口,继承与他的接口主要有Set 和List.,Collecitons是工具类。提供一系列静15.java的基本类型有哪些?
int,long ,short,boolean,byte,float,double,char
16.int和Integer的区别
Integer是int的包装类。扩展下……
17.break和continue的区别
break:跳出当前循环体
continue:跳过本次循环,继续下一次循环
return:跳出方法
18.final finally和finalize的区别
final修饰类是最终类,不能被继承,修饰方法,方法不能被重写,修饰变量,变量不能被修改值。
Finally.java的异常处理。代表适中执行的代码,一般用于是否资源。
Finalize是Object的protected方法。在垃圾回收GC之前会被调用。
19.Set和List的区别
set是无序的,不能有重复元素,List是有序的,可以有重复元素
20.ArrayList和LinkedList的区别:
ArrayList的存储方式是数组,插入和删除的效率慢,查找的速度快
LinkedList的链表,插入和删除的效率快,查找的速度慢
21.Vector和ArrayList的区别
Vector的方法都是同步的(Synchronized),是线程安全的,而ArrayList的方法不是,由于线程的同步必然要影
响性能,因此,ArrayList的性能比Vector好。
22.HashMap和HashTable的区别
Hashtable的方法是同步的,而HashMap的方法不是。HashMap的效率高.HashMap可以用null作为key
23 &和&&的区别
后面是短路与,如果&&前面的代码为false,后面的表达式不再执行。但是&都会执行,以为他是做位运算,
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)
24 String s = new String("xyz");创建了几个对象,在内存中如何表示(放笔试)
两个,一个字符对象“xyz”存在于字符串常量池,一个字符对象引用对象,存放在堆内存
25.Math.round(11.5)等於多少? Math.round(-11.5)等於多少(放笔试)
Math.round(11.5)==12;Math.round(-11.5)==-11
26.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错(放笔试)
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;
27 Java有没有goto
java中的保留字,现在没有在java中使用
28 数组有没有length()这个方法? String有没有length()这个方法 数组没有,String 有
29 构造器Constructor是否可被override
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading
30 是否可以继承String类
String类是final类故不可以继承
31.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,
会执行,在return前执行
32 用最有效率的方法算出2乘以8等於几
2 << 3
33 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里
是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用34 swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
int、 short、 char , byte以及对应的封装类,枚举,JDK1.7后可以是String
35 char型变量中能不能存贮一个中文汉字?为什么?
是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
36 基本类型有哪些?String是不是
基本数据类型包括byte、int、char、long、float、double、boolean和short。
https://www.360docs.net/doc/6b14604091.html,ng.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们
37 int和Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为i
38 什么是java序列化,如何实现java序列化?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行
读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题
39 说说连接池的工作原理
40,Statement和Preparestatement区别
Preparestatement预编译语句,可以使用?占位符 在批量执行SQL语句的时候,Preparestatement效率高,因为它只将SQL 41. 数据库的设计的三范式
1NF:列的原子性,列不能被分割。没有重复列
2NF:满足第一范式基础上 。唯一标识一行数据列(主键),并且所有属性只能依赖主键,不能部分依赖
3NF:在满足第二范式基础上,属性不依赖于其它非主属性
42 事务是什么?解释下ACID
原子性,(事务是最小的执行单元,要么全成功,要么全失败)
一致性,(事务执行前后的数据一致)
隔离性,(不同事务之间不相互影响)
持久性,(保存commit到数据库后,事务不能回滚)
43.解析XML有哪两种方式
SAX/DOM DOM解析适用于XML文件较小 ,因为DOM是将xml一次性加载,构建称DOM树.占内存大,速度快 /
J2EE面试题
1.get和post两种提交方式的区别:
1.get请求传送的数据量小4K,psot理论上没有限制,但是最好不要超过64k
2.get请求的数据会在地址栏(URL)上现实,数据安全性不好。POST加密传送安全性好
3.get请求响应速度快,post相对来说慢
2:c/s和B/S各自的优缺点(理解,非标准答案)
B/S结构的优点
(1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。
(2)、业务扩展简单方便,通过增加页面即可增加服务器功能。
(3)、维护简单方便,只需要改变页面,即可实现所有用户的同步更新。
(4)、共享性强
2B/S模式的缺点
(1)、响应速度不及C/S,随着AJAX技术的发展,相比传统B/S结构软件提升一倍速度。
(2)、用户体验效果不是很理想,B/S需要单独界面设计,厂商之间的界面也是千差万别,由于浏览器刷新机制,使用时有刷屏现象,好在AJAX技术解决这一难题。
3C/S模式的优点和缺点
C/S模式的优点
1.由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度较快。
2.C/S结构的管理信息系统具有较强的事务处理能力。
4C/S模式的缺点
1.维护不方便(软件升级..补丁)
3:servlet的生命周期
servelt容器启动加载servlet和创建servlet实例
-->第一次访问servlet调用init方法
-->调用servlet执行service方法,service根据请求的类型调用响应doGet()doPost()
-->service处理完请求返回消息给客户端浏览器,等待再次请求。
-->当服务器关闭或重启调用servlet的destory方法
4.servlet是线程安全吗
不是,所以我们尽量避免使用全局变量
5.常见的服务器
tomcat jboss websphere weblogic glassfish
6:<%@ include %>和
7:jsp内置对象有哪些?
page request response session application exception pageContext out config
8.sendRedirect()和forward的区别
sendRedirect是重定向,
forward请求转发,在容器内执行,共享同一个request
9.MVC的概念
model-view-control
(如果使用jsp+servlet+javabean编程 jsp输入VIEW 负责页面展示,servlet属于控制层,javabean属于模型,基本的知识 :
HTTP会话技术有哪些 ?Session,cookie,url重写,隐藏域
HTTP默认的端口号 :80
计算机之间通讯是用什么协议:TCP/IP.使用什么技术通讯 :SOCKET
字符流和字节流的区别:处理单元不同。 字节流处理单元为字节。字符流处理单位为字符。一般像文本文件可如何实现线程 :继承Thread类或者实现Runable接口、启动线程调用start()方法
HTTP什么意思?无状态会话协议
HTTP的地址栏采用什么编码?ISO8859-1
列举常见的runtime exception :要求至少3个NullPointerException,ArithmeticException,
提升自己Level的面试题:面试官可能不问,但是我们可以将话题引到这边
谈谈数据库优化 :
1、在数据量比较大的表做查询,一般要在经常查询的列上建立索引:建立索引的原则,不能太多。经常对表字段修改的不加。数据量大,且查询的数据量小于总量的4%加
2、查询优化:减少多表连接的查询,有的时候为了性能要牺牲设计,打破三范式的设计。
3、数据库设计优化:
对于数据量大的表,如果增长量较大,可以视情况做横向切割,即:将一张表的数据分多张表存放数据。,表的结构一样,会给查询带来一些麻烦.
谈谈系统优化:
1.为了扩展性 :接口编程
2.部署负载均衡
3.连接池优化数据库连接,也可以用JNDI,将连接任务交给应用服务器来完成
4.减少对服务器的访问次数,多用AJAX,多使用缓存技术(对实时性要求不高的数据)
谈谈你了解的设计模式:
1.要能说出你熟悉哪种设计模式,这种设计模式的优点和缺点。解决了什么问题。自己准备2-3个设计
模式
谈谈接口编程的好处:
1.减少耦合
2.扩展性好,如生活中接口的例子:转换器…
3.可移植性
4.解决了JAVA不能多继承的问题
5。接口体现的是制定者的意图。将声明和实现分开,资深的软件工程师更多可以做设计,初级程序员可以按照前辈的设计来实现代码。有助于标准的实现。如生活中的例子:统一手机USB接口,不会造成资源浪费。功能通用。
谈谈软件设计原则:
开闭原则:对实现关闭,对扩展开放
迪米特原则,
里氏替代原则:能有父类替代子类的地方,尽量用父类接收。而不用子类接收
控制反转(依赖注入):不是使用NEW来增加耦合。从传统的拿---到现在提供公有的方法,让别人送过来。用到接口,送过来的是接口的子类
模块化编程:每个功能尽量不影响其他功能。除去这个功能其他功能依然能用,需要这个功能只要简单配置就可以将功能集成过来。
笔试题总结:
8变成2效率最高的运算方式是8>>3
JDBC编程(50%)
单例模式(90%以上)
递归(60%)
冒泡排序 (90%以上)
人事面试问题:
为什么离开上个公司
最大的优点最大的缺点
未来职业规划
对加班的看法
是否适应经常出差
项目开发流程
培训或者工作中的收获
是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象。提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
么时候被执行,在return前还是后
结果,那么这里到底是值传递还是引用传递
的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的eger是java为int提供的封装类。Java为每个原始类型提供了封装类
效率高,因为它只将SQL语句编译一次。