ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:52.14KB ,
资源ID:8647307      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8647307.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java程序员面试宝典1.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java程序员面试宝典1.docx

1、java程序员面试宝典1java基础知识java开发环境JRE和JDK的区别?各自的作用:JRE:Java Runtime Environment的缩写,是java程序运行环境JDK:Java Development Kit,是java的开发工具包,包含了各种类库,同时也包含JRE,具备开发功能的JDK所包含的JRE同时有client的JVM和server的JVM,而仅仅作为运行环境的JRE下只有client的jvm.dll就够了。 JDK需要进行环境变量的配置,JRE安装时会自动经JRE的java.exe添加到系统变量Path中。JDK是java开发工具,不仅提供了java程序运行所需要的J

2、RE,还提供了一系列的编译、运行等工具,如javac java javaw等。JRE只是java程序的运行环境,其最 核心的内容就是JVM(java虚拟机)及核心类库。如何用JDK编译和运行应用程序编译:javac,将源码编译为class文件 运行:java,运行包含主方法的class文件注意 需要将JDK的安装目录/bin配置到Path环境变量中环境变量ClassPath的作用ClassPath环境变量是用来指定java程序搜索类的路径的,对于java应用程序来说,该变量的意义是非常重要的。CLASSPATH环境变量在编译java源码和运行程序是使用,也就是为java程序所依赖的接口、类等指

3、定一个搜索路径。例如:.;c:jarlogj4.jar;d:workjava 指定了三个搜索路径,分别为:当前目录、logj4.jar文件的路径和d:workjava文件夹下的所有的类。在java程序编译和运行 时,不仅会在CLASSPATH中搜索类,还会在JRE的目录下去找一个名为rt.jar的文件,器路径为jre/lib/rt.jar。并且 会先搜索rt.jar 再搜索CLASSPATH指定的目录如何为java程序动态指定类搜索路径JDK中的java和javac命令提供了 cp 和 classpath 选项为java程序动态指定类搜索路径。如 javac -cp D:workjavalog

4、j3.jar HelloWorld.java或者 java -cp D:workjavalogj3.jar HelloWorld.java cp 也可以用classpath代替java和c+程序在编译和运行有什么区别C+源码编译以后生成的特定机器可以直接运行的文件,而java编码经过编译后生成的中间字节码文件,这些字节码文件需要放到JVM中运行,而JVM是有多个 平台版本的所以说java鱼油跨平台性。java是解释型语言 c+是编译性语言什么是JVM及其工作原理JVM是一种用软件模拟出来的计算机,用于执行java程序编译后生成的中间字节码文件,是java跨平台的依赖基础。java虚拟机有自己想

5、象的硬件,如处理器、 堆栈、寄存器等,还具有相应的指令系统,它运行java程序好像一台计算机运行C+或C程序一样,它屏蔽底层系统实现的细节。java程序为何无须使用delete语句进行内存回收JVM在内存存储对象的原理:java除了8中基本类型外,其他的类型都是对象类型的数据。JVM会把程序中的对象放在堆空间。 堆是一个运行时的数据存储区,一般,运行时的数据存储区包含堆和堆栈,栈中存放非static的自动变量、函数参数、表达式的临时结果和函数返回值。栈中的 这些实体数据的分配和释放都是由系统自行完成的。堆中存放的实体数据都是程序中由程序员显示分配的,没有自动垃圾回收机制的系统必须由程序员显式释

6、 放这些实体。JVM具有垃圾回收机制,也就是堆内存的管理的自动运行。提出:如何确定对象已经回收? java中根父类java.lang.Object中有个finalize()方法,它会在垃圾回收期认为这个对象是垃圾的之后,真正回收之前被调用。因为所有的类都继承自OBject,所以 它们都会有finalize()方法。所以程序员可以在这个方法中实现一些对象被回收之前的事,如关闭数据库连接等,finalize()方法的原型为protected void finalize()throws Throwable另外java.lang.System类中有一个gc()方法,也对垃圾回收有一定的影响。通过显式的

7、调用它可以请求开始垃圾回收线程,开始垃圾回收,但是垃圾回收线程是否 立即开始还是有JVM算法决定。 java,kabg.Runtime类中gc()方法与System的作用一样,只不过是Runtime是一个单例模式的类,需要用getRunTime()方法先获得实例,然后调用gc方法java的堆内存的数据释放功能由垃圾回收器自动完成,无需程序员显式的调用delete方法。该机制有效的避免了程序员因忘记释放内存而造成的内存溢出的错 误,是一项改进。生成、部署如何利用命名提示符把java程序打包成jar文件【分析】 jar文件是java程序打包以后的格式文件,它一般保存的有class文件、配置文件等。

8、jar文件的主要是方便程序的发布和部署。jar c t x u f v m e 0 M i-c 目录 文件名.ctxuf必选其一vmeOMi可选其一 【答案】利用JDK的bin目录下的jar命令就可以对java程序进行打包,一般需要包含程序所需要的class文件、配置文件和manifest.mf文件。其中C -V 和 -f三个命令较为常见 (创建、生成详细报告、指定jar包的文件名)jar cf test.jar 创建并生成 test.jar包关于java web项目的生成、部署和配置问题一个标准的java web应用程序的规范包括:目录结构、web配置文件、打包和部署、Servlet JSP

9、 等文件夹的目录机构必须包含一个WEB-INF目录(classes、lib)以及Web描述文件web.xml;与WEB-INF同一层的目录存放的是JSP、HTML等文件。Web配置文件定力了Servlet、过滤器、监听器和一些参数信息。 Servlet是服务器端处理HTTP请求的基本组成单元,包括JSP、过滤器等在内的许多技术都基于Servlet实现。Servlet是符合一定规范的Java类,存活在Web容器 中,由容器来控制Servlet的生命周期。 JSP是参考其他动态语言而设计,脚本语言就是java,但是本质也是Servlet,它比其他动态语言更加强大,严格意义来说,熟悉JSP开发,并意

10、味值熟悉Java Web开发,只能说是使用动态语言开发Web乘车,JSP作为Java Web开发是不可或缺的一部分,在大多数的开发中,它往往是用于显示处理后的结果。 打包与部署:web应用程序也可以打包,只是后缀是War,与jar打包原理一样,都可以通过JDK提供的jar命令进行打包。部署:将java Web应用程序的文件夹或打包文件放在Tomcat的安装目录项/webapps下面即可完成部署 【答案】java Web应用程序的生成、需要把它所需要的class文件编译好存放在WEB-INF/classes下,然后按照以上介绍的目录结构放置各类文件,如果需要添加自己的配 置,需要增加或修改WEB

11、-INF/web.xml文件。对于JAVA WEB应用程序的部署,可以使用文件夹夏河War文件两种部署方式,其中War就是把文件夹按照jar的方法 进行打包,只不过后缀为War。EJB项目的生成和部署【答案】EJB项目的生成过程主要有两个步骤:编译class文件和特定位置中存放配置文件,例如:对于EJB 3.0程序的JPA,就需要在META-INF文件夹下存放持久化的配置 文件persistence.xml。部署的过程也比较简单,就hi把打包好的jar文件或未打包的文件夹存放在java EE服务器指定的路径下即可。Java语法基础基础类型和语法变量及其作用范围【答案】 静态变量:由类决定 成员

12、变量:由对象决定局部变量:定义在方法中的变量、方法的参数或代码块里定义的变量,作用范围用来界定局部变量不能与上一层局部变量同名会编译错误 局部变量可以与成员变量和静态变量重名,此时如果想要调用成员变量使用this指针,使用静态变量可以使用类名。java变量分哪两种大的数据类型基本数据类型:直接存放数据的值:byte char short int long float double boolean引用数据类型:存放数据所在的地址class Studentpublic String name; public int age;public Student(String name,int age) t

13、his.name = name;this.age = age;public class RefTestprivate static void refChange(Student stu) stu.name = wang;stu.age = 10;public static void main(String args) Student stu1 = new Student(zhang,12); Student stu2 = stu1;refChange(stu2); System.out.println(stu1.name+,+stu1.age);/wang,10;即stu1 和 stu2指向的

14、是同一个地址,所以改变stu2,stu1也会跟着改变。java中的基本类型和包装类byte char int short long float double booleanByte Character Integer Short Long Float Double Booleanjava中的装箱和拆箱java 5.0 提供了自动装箱和拆箱的功能,可以使用以下语句进行打包基本类型Integer integer = 10;【答案】 java中的装箱和拆箱指的是基本数据类型和包装类型的自动相互转换,它为开发者提供了方便。开发人员也可以不使用它,而手动的进行数据类型转换。并 且,这个自动转换的过程是在

15、编译阶段。java的引用和C+的指针有什么区别【分析】+ 类型:引用其值为地址的数据元素,java封装了的地址可以转换成字符串看,长度可以不用关心。C+指针是一个装地址的变量,长度一般是计算机字长,可 以认为是个int+ 所占内存:引用声明是没有实体,不占空间。c+指针如果声明后会到用时餐赋值,不用则不会分配内存。+ 初始值:引用的初始值 null,指针初始值不固定所以比较危险+ 计算:引用是不可以计算的。C+指针是int,可以计算+ 控制:引用不可以计算,所以它只能在自己程序中,可以被控制。C+指针是可以计算,所以比较危险+ 内存泄露:java引用不会产生内存泄露,c+指针容易产生+ 作为参

16、数:java的方法参数只是传值,引用作为参数是,返回给函数内引用的值的拷贝,所以在喊内交换两个引用是没有意义的,但是改变引用的属性是有用 的,因为拷贝和引用的引用对象是同一个对象。【答案】 java的易用与C+指针主要有类型、所占内存、内存泄露、初始值、计算和控制以及作为参数8个方面。本质上,它们两者都是想通过一个叫做引用或者指针的 东西,找到要操作的目标,方便在程序中操作。java中的引用更加安全一些。简述java中的main方法public static void main(String args)【答案】main()方法是java程序的执行入口,它是一个定义在类中的、公开的、静态的、无返

17、回值的、参数为一个字符串数组的方法,它的参数args与执行参数一一对 应。java中的equal和=的区别【答案】equal和= 都表示相等的意义= 运用在基本数据类型比较时,比较的是实际的值,当用于比较引用类型是,则比较两个引用的地址是否相等equal 方法是java.lang.Object的方法,可以被程序员覆盖重写通过自定义的方式来判断两个对象是否相等,对于字符串java.lang.String类来说,它的equal方法用 来比较字符串的字符序列是否完全相等。java中提供几种循环结构?各自的特点for,适合循环次数的循环结构 while 适合单条件的循环do while 适合在执行某段

18、代码之后,再循环的时候更适合一些。三元操作符注释/ /* / /* */对象和类型类和对象有什么区别java的类通过class关键字进行定义,它代表了一种抽象的集合 对象,指的是某一个特定抽象的实例,它属于某一种类型java中如何使用继承来重写代码【答案】 java采用的是单继承机制,使用extend关键字。通过继承以后,子类就拥有了父类除了私有成员以外的所有成员,从而达到代码重用的目的。在继承过程中,可 以通过方法的覆盖来实现多态,让子类拥有自己独特的方法实现方式。简述java中的多态【答案】 多态 一词按照字面意思是来理解为“多种形式,多种状态”。它的本质是,发送消息给某个对象。让该对象自

19、行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。介绍java中静态成员的特点静态成员是一组比较特殊的成员,它不属于某个特定的类的实例,而是属于一个类所有,这个类的所有实例可以共享他们。在类加载时,就进行创建好初始化 或执行代码。对于一个类来说,都只有一份简述java派生类中的构造方法如何为父类传递参数在java中,使用super关键字加括号()的形式来为父类的构造方法提供参数,通过参数的数据和类型来决定调用哪一个构造方法。如果调用的是父类的默认的 无参数构造方法,则可不必显式地使用 super()简述接口与抽象类的区别【答案】 抽象类是一种功能不全的类,接口只是

20、一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。从某种意义上说,接口是一种特殊形式的抽 象类,在java中,抽象类表示一种继承关系,一个类只能继承一个抽象类,而一个类可以实现多个接口。 抽象类中不仅有方法,还可以成员变量,抽象类中也可以有非抽象方法,包含抽象方法的类一定是抽象类,抽象类不能被实例化 接口中的所有方法都是抽象方法,但是可不必显式用abstract 定义,只能包含静态变量,并且这些变量的值不可修改。简述内部类的实质【分析】 内部类的含义:内部类就像一只寄生虫一样,寄生于其他类的内部。缩小了可见性。内部类的分类:局部式和成员式。成员内部类指的是它们定义的的地方与成员

21、变量和成员方法类型,就好像是类的一个成员一样。局部式内部类则是定义在方 法体中,仅属于局部范围所有。成员式内部类又分为:静态内部类和成员内部类。 局部式内部类又分为:普通局部式和匿名内部类。 【答案】静态内部类:相当于外部类的静态成员一样,使用static修饰的内部类,它隶属于外部类,使用起来相当于一个独立的外部类。 成员内部类:相当于外部类的普通成员一样,隶属于外部类的具体事例,在定义时,需要先创建外部类的对象,再创建它的实例。 局部内部类:定义在一个方法体中,它往往仅作为方法短暂的使用,只能访问用final修饰的局部变量。 匿名内部类:它也定义在方法体中,但是它没有一个具体的名字,具有非常

22、大的灵活性,工作本质与局部内部类类似。包和访问控制包应该如何被创建及使用包是java程序中关于命名空间的一种手段,它可以有效的解决类重名的问题。当需要把一个类定义在某个包下的时候,需要使用package关键字进行定义;当需 要使用其他包下的类的时候,则需要使用import关键字进行导入。寿命private、protected、public和default的区别类内部 本包 子类 外部包public y y y y protected y y y n default y y n n private y n n n数据类型及类型转换整型数据int和Integer的区别【分析】int通过new 包装

23、类或静态的valueOF方法转换成包装类装箱Integer通过调用intValue方法转换为int类型拆箱 【答案】int是基础类型,字节长度为4,它的创建不会在堆内存中开辟空间,一般保存在栈中,可以进行算术运算,在参数传递时,直接传递它的值。 Integer是int的包装类,本质是一个类。它的创建会在堆中开辟一块新的空间。不能进行算术操作。传参时传递的是它所代表的对象的一个引用。int的取值范围-231 (231-1)如何使用八进制和十六进制数来表示整型数据【答案】java中八进制以0开头,十六进制以0x开头long的取值范围-261 (261-1)实型数据float和double的取值范围

24、float:3.4E+10-38 3.4E+1038 double:1.7E+10-308 1.7E+10308小数默认是 double,所以float需要显式定义:float i= 2.3f;而不是 float i= 2.3;实型与整型的转换如何使用BigDecimal类进行精确运算【答案】1 用float或double变量构建BigDecimal对象,通过构造方法或者valueOf方法2 通过调用BigDecimal的加、减、乘法、除法等。3 把BigDecimal对象转换为float int等基本类型,是使用xxxValue()等方法布尔型数据java中可以使用非0代表true吗?【答案

25、】不能,java中非0不能代表true,只能使用布尔型的true和false进行条件判断。boolean和Boolean的区别【答案】1 boolean是基础数据类型,Boolean是包装类2 boolean一般存放在栈中,Boolean存放在堆中 3 boolean有true和false两种值,Boolean还有null字符串数据char 的取值范围java中的char采用Unicode编码格式,用两个字节表示一个字符,16位。所能表示的最大数量为216char能否存放汉字char可以存放汉字,每个汉字都有相应的Unicode,而char是用Unicode表示的,所以可以表示汉字。如何使用转

26、义字符使用反斜杠”字符 一起构成转义字符 b r回车 n换行等String类型字符串可以使用+号,String类不能被继承字符串变量是否自动生成一个String对象【答案】可以。字符串类具有一定的特殊性,JVM在执行双引号操作符的时候,会自耦东创建一个String对象,并返回该对象的引用。字符串对象池的作用是使用双引号和new创建字符串对象的区别在于,前者在对象池中取对象,后者直接生成新对象。String str1 = abc; String str2 = abc;str1 = str2/true;因为会先去对象中检测有没有值相等的对象,有就取,没有再创建String str3 = new S

27、tring(abc);str1 = str3/false;new 会直接创建新对象,所以此处引用不同。StringBuer 和 StringBuilder存在的作用【分析】Java中的字符串对象有一个对象,为不变形,即它只能被创建,而不能被改变,因此,一些大量使用字符串的程序可能出现性能瓶颈,甚至内存溢 出。【答案】 在java中,如果有大量拼接字符串的需要的话应该使用StringBuer和StringBuilder类,它们可以避免不必要的String对象的产生,以提供性能,StringBuer线程 不安全。StringBuilder线程安全如何输出反转后的字符串【分析】常规算法:遍历逆序打印

28、,或者转换为char数组toChar方法,逆序打出。 但是java中使用StringBuer可以更容易实现调用其reverse()方法。如何使用指定的字符集创建String对象String a = 中文;String b = new String(a.getBytes(),GBK);String c = new String(a.getBytes(),UTF-8);数组和集合的使用java数组如何理解数组在java中作为一个类int arr = new int1,2,3,4; int ar1= new int4;数组的类名可以通过获取数组的Class类型来获取arr.getClass.getN

29、ame();/I str.getClass.getName();/Ljava.lang.String【答案】 java的数组本质是一个类,该类保存了数据类型的信息。该类通过成员变量的形式来保存数据。并且通过符号,使用下表来访问数据。在处理基本类型数据 时,数组保存的是变量的值,如果未提供初始值,数组会将int型初始为0,如果处理引用类型时,数组保存的是数据的引用,如果程序员为提供初始值,数组会 把这些变量的值初始化为nullnew Object5语句是否创建了5个对象java数组的本质是一个Java类,它也是通过 new 语句进行 实例化。但是这个new语句却不会实例haul数组中的对象。 【

30、答案】不会,题目语句实际上创建了一个数组实例,长度为5,每个数组元素的值为null,并没有创建5个Object实例。如何拷贝数组的数据如果用= 号 ,则只是复制了引用,并没有把数组进行拷贝,改变的同一块地址 【答案】使用System.arraycopy()方法,或者重新创建一个数组,循环赋值。二维数组的长度是否固定int arr = new int3; arr0 = new int4; arr1 = new int1,2; arr2 = new int1,2,3;【答案】长度不固定,java数组的长度可以动态变化,程序员可以任意扩展数组的维度,每一维度的元素个数可以不同。集合框架什么是集合collection - set(sortedSet),list map(sortedMap)List:有序存放,允许重复,可以存放不同类型的对象Set:无序存放,不允许重复,可以存放不同类型的对象SortedSet:排序的Set Map:键值对 SortedMap:排序好的Map【答案】 集合是用来存放其他对象的对象,代表一种底层结构,用于扩展数组的功能。结合框架由一系列的接口和实现类组成,包括列表、集合、映射等,它们大多具 有可迭代性和可比较性迭代器是什么【分析】 迭代器模式,又叫游标模式,提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1