Java面试宝典
- 格式:doc
- 大小:65.50 KB
- 文档页数:10
Java部应届生面试题一、J ava基础1.试分析基本数据类型和引用数据类型的基本特点。
Java的基本数据类型都有固定的数据位,不随运行平台的变化而变化。
基本数据类型包括byte、int、char、long、float、double、boolean和short。
引用类型都是用类或对象实现的,引用数据类型包括:类,数组,接口。
基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的。
不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于对象类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。
1、面向对象的特征有哪些方面(8分)JAVA面向对象最重要的特征就是:封装,继承,多态。
封装是为了方便调用类库里面已经写好的函数,继承是方便对已有函数的功能进行直接调用和扩展。
按照原则,java中已经写好的类库会被打包成jar包,不允许调用者更改里面的代码。
但是你可以通过其中的抽象类或者接口,根据具体的业务逻辑进行功能的扩展。
多态的作用是,可以实现对继承对象的统一调度,是面向对象的精髓所在。
另外,java还有语言简单,面向对象,和平台无关性。
之所以java可以跨平台,在于他可以通过java虚拟机JVM,将java代码解释成该平台能理解的语言。
2、java中实现多态的机制是什么?(4分)java中实现多态的机制是依靠父类或接口的引用指向子类。
从而实现了一个对象多种形态的特性。
其中父类的引用是在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义的方法来运行,而是根据具体的实例的方法。
3、请您说说你对Reflection(反射)的认识?(5分)4、String是最基本的数据类型吗?最基本的数据类型有哪些?(4分)(1)引用类型:数组、枚举、用户自定义类型和系统类(2)基本数据类型:8种,整数类型、浮点类型、字符类型、逻辑类型整数类型:byte short int long浮点类型:float double字符类型:char逻辑类型:boolean5、String s = new String("xyz");创建了几个String Object?(3分)1.如果String常理池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")。
6、String 和StringBuffer、StringBuilder之间区别。
(5分)1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String2.String <(StringBuffer,StringBuilder)的原因String:字符串常量StringBuffer:字符串变量StringBuilder:字符串变量从上面的名字可以看到,String是“字符串常量”,也就是不可改变的对象。
对于这句话的理解你可能会产生这样一个疑问,比如这段代码:我们明明就是改变了String型的变量s的,为什么说是没有改变呢? 其实这是一种欺骗,JVM 是这样解析这段代码的:首先创建对象s,赋予一个abcd,然后再创建一个新的对象s用来执行第二行代码,也就是说我们之前对象s并没有变化,所以我们说String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,可想而知这样执行效率会有多底。
而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,当然速度就快了。
3.一个特殊的例子:你会很惊讶的发现,生成str对象的速度简直太快了,而这个时候StringBuffer居然速度上根本一点都不占优势。
其实这是JVM的一个把戏,实际上:String str = “This is only a” + “ simple” + “test”;其实就是:String str = “This is only a simple test”;所以不需要太多的时间了。
但大家这里要注意的是,如果你的字符串是来自另外的String对象的话,速度就没那么快了,譬如:String str2 = “This is only a”;String str3 = “ simple”;String str4 = “ test”;String str1 = str2 +str3 + str4;这时候JVM会规规矩矩的按照原来的方式去做。
4.StringBuilder与StringBufferStringBuilder:线程非安全的StringBuffer:线程安全的当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。
当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。
对于三者使用的总结:1.如果要操作少量的数据用= String2.单线程操作字符串缓冲区下操作大量数据= StringBuilder3.多线程操作字符串缓冲区下操作大量数据= StringBuffer二、J SP7、forward 和redirect的区别(4分)1)forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.2)从数据共享来说forward:转发页面和转发到的页面可以共享request里面的数据. redirect:不能共享数据.3.)从运用地方来说forward:一般用于用户登陆的时候,根据角色转发到相应的模块.redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.4.)从效率来说forward:高.redirect:低.8、JSP的内置对象及对象的含义(10分)9、在user_list.jsp文件中写一段JavaScript代码,找出页面中的所有CheckBox,并将其都标识为选中状态。
(5分)10、实现页面id为A和B两个表单对象的数据值交换(4分)11、请写几个html元素以及相应控制效果(5分)三、数据库12、现有数据表表名为:g_cardapply字段(字段名/类型/长度):g_applyno varchar 8;//申请单号(关键字)g_applydate bigint 8;//申请日期g_state varchar 2;//申请状态表名-2:g_cardapplydetail字段(字段名/类型/长度):g_applyno varchar 8;//申请单号(关键字)g_name varchar 30;//申请人姓名g_idcard varchar 18;//申请人身份证号g_state varchar 2;//申请状态其中,两个表的关联字段为申请单号。
题目:1、查询身份证号码为440401*********的申请日期(2分)2、查询同一个身份证号码有两条以上记录的身份证号码及记录个数(4分)3、将身份证号码为440401*********的记录在两个表中的申请状态均改为07(4分)4、删除g_cardapplydetail表中所有姓李的记录(2分)13、写一个SQL语句:请将数据库中的相同记录取出,并计算出其中一个字段的合计数。
(6分)如:希望得到:四、编程题14、请在如下函数体中补充完成代码,实现根据输入字符串返回该字符串的倒序形式,如输入“ABC”返回“CBA”。
(5分)Public String getReverseString(String str) {}15、如果给你一个:数据库驱动程序A,数据源名称为B,用户名称为C,密码为D,数据库表为T,请用JDBC的方式检索出表T的所有数据。
(10分)答:16、请检查下面的代码是否正确?如果错,请写出理由。
(4分)public class Something {public static void main(String[] args) {Something s = new Something();System.out.println(">>>>>>>returns:" + doSomething());}public String doSomething() {return "Do something ...";}}答:17、下面这段代码中需要对数组“arr”进行排序(从小到大),请实现其代码(避免使用JDK提供的方法,如:Arrays类的sort方法)。
(12分)public static void main(){int[] arr = new int[]{ 5, 6, 2, 3, 9, 0, 4, 1, 8, 10, 7 };}。