理论知识总结

理论知识总结
理论知识总结

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语句编译一次。

相关文档
最新文档