搜档网
当前位置:搜档网 › 【黑马程序员】2020年Java面试题(中)

【黑马程序员】2020年Java面试题(中)

【黑马程序员】2020年Java面试题(中)
【黑马程序员】2020年Java面试题(中)

【黑马程序员】2020年Java面试题(中)黑马程序员免费视频库:https://www.sodocs.net/doc/df6409166.html,?2020sxkyk

31.如何权衡是使用无序的数组还是有序的数组?

有序数组最大的好处在于查找的时间复杂度是O(log n),而无序数组是O(n)。有序数

组的缺点是插入操作的时间复杂度是O(n),因为值大的元素需要往后移动来给新元素腾位

置。相反,无序数组的插入时间复杂度是常量O(1)。

32.Java 集合类框架的最佳实践有哪些?

根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:假如元

素的大小是固定的,而且能事先知道,我们就应该用Array 而不是ArrayList。

有些集合类允许指定初始容量。因此,如果我们能估计出存储的元素的数目,

我们可以设置初始容量来避免重新计算hash 值或者是扩容。

为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可

以避免运行时的ClassCastException。

使用JDK 提供的不变类(immutable class)作为Map 的键可以避免为我们自己

的类实现hashCode()和equals()方法。

编程的时候接口优于实现。

底层的集合实际上是空的情况下,返回长度是0 的集合或者是数组,不要返回

null。

更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码

加QQ:1679806262

33.Enumeration 接口和Iterator 接口的区别有哪些?

Enumeration 速度是Iterator 的2 倍,同时占用更少的内存。但是,Iterator 远远比

Enumeration 安全,因为其他线程不能够修改正在被iterator 遍历的集合里面的对象。同

时,Iterator 允许调用者删除底层集合里面的元素,这对Enumeration 来说是不可能的。

34.HashSet 和TreeSet 有什么区别?

HashSet 是由一个hash 表来实现的,因此,它的元素是无序的。add(),remove(),

contains()方法的时间复杂度是O(1)。

另一方面,TreeSet 是由一个树形的结构来实现的,它里面的元素是有序的。因此,

add(),remove(),contains()方法的时间复杂度是O(logn)。

垃圾收集器(Garbage Collectors)

35.Java 中垃圾回收有什么目的?什么时候进行垃圾回收?

垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源。

更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码

加QQ:1679806262

36.System.gc()和Runtime.gc()会做什么事情?

这两个方法用来提示JVM 要进行垃圾回收。但是,立即开始还是延迟进行垃圾回收是取

决于JVM 的。

37.finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?

在释放对象占用的内存之前,垃圾收集器会调用对象的finalize()方法。一般建议在

该方法中释放对象持有的资源。

38.如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?

不会,在下一个垃圾回收周期中,这个对象将是可被回收的。

39.Java 堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?

JVM 的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在JVM 启动的

时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。

堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的,不会被垃圾回收。

死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象。一直到垃圾收集器把这

些对象回收掉之前,他们会一直占据堆内存空间。

更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码

加QQ:1679806262

40.串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?

吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用

程序。而串行收集器对大多数的小应用(在现代处理器上需要大概100M 左右的内存)就足够

了。

41.在Java 中,对象什么时候可以被垃圾回收?

当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收

了。

42.JVM 的永久代中会发生垃圾回收么?

垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回

收(Full GC)。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。这

就是为什么正确的永久代大小对避免Full GC 是非常重要的原因。请参考下Java8:从永久

代到元数据区

(译者注:Java8 中已经移除了永久代,新加了一个叫做元数据区的native 内存区)

异常处理

43.Java 中的两种异常类型是什么?他们有什么区别?

Java 中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检

查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛

出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。相反,受检查

的异常必须要用throws 语句在方法或者是构造函数上声明。这里有Java 异常处理的一些

小建议。

更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码

加QQ:1679806262

44.Java 中Exception 和Error 有什么区别?

Exception 和Error 都是Throwable 的子类。Exception 用于用户程序可以捕获的异常

情况。Error 定义了不期望被用户程序捕获的异常。

45.throw 和throws 有什么区别?

北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090

throw 关键字用来在程序中明确的抛出异常,相反,throws 语句用来表明方法不能处理

的异常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可

能发生的异常,多个异常是用逗号分隔的。

45.异常处理的时候,finally 代码块的重要性是什么?(译者注:作者标题的序号弄错

了)

无论是否抛出异常,finally 代码块总是会被执行。就算是没有catch 语句同时又抛出

异常的情况下,finally 代码块仍然会被执行。最后要说的是,finally 代码块主要用来释

放资源,比如:I/O 缓冲区,数据库连接。

更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码

加QQ:1679806262

46.异常处理完成以后,Exception 对象会发生什么变化?

Exception 对象会在下一个垃圾回收过程中被回收掉。

47.finally 代码块和finalize()方法有什么区别?

无论是否抛出异常,finally 代码块都会执行,它主要是用来释放应用占用的资源。

finalize()方法是Object 类的一个protected 方法,它是在对象被垃圾回收之前由Java

虚拟机来调用的。

Java 小应用程序(Applet)

48.什么是Applet?

java applet 是能够被包含在HTML 页面中并且能被启用了java 的客户端浏览器执行的

程序。Applet 主要用来创建动态交互的web 应用程序。

49.解释一下Applet 的生命周期

applet 可以经历下面的状态:

Init:每次被载入的时候都会被初始化。

Start:开始执行applet。

Stop:结束执行applet。

Destroy:卸载applet 之前,做最后的清理工作。

50.当applet 被载入的时候会发生什么?

首先,创建applet 控制类的实例,然后初始化applet,最后开始运行。

51.Applet 和普通的Java 应用程序有什么区别?

applet 是运行在启用了java 的浏览器中,Java 应用程序是可以在浏览器之外运行的独

立的Java 程序。但是,它们都需要有Java 虚拟机。

进一步来说,Java 应用程序需要一个有特定方法签名的main 函数来开始执行。Java

applet 不需要这样的函数来开始执行。

最后,Java applet 一般会使用很严格的安全策略,Java 应用一般使用比较宽松的安全

策略。

更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码

加QQ:1679806262

52.Java applet 有哪些限制条件?

主要是由于安全的原因,给applet 施加了以下的限制:

applet 不能够载入类库或者定义本地方法。

applet 不能在宿主机上读写文件。

applet 不能读取特定的系统属性。

applet 不能发起网络连接,除非是跟宿主机。

applet 不能够开启宿主机上其他任何的程序。

53.什么是不受信任的applet?

不受信任的applet 是不能访问或是执行本地系统文件的Java applet,默认情况下,

所有下载的applet 都是不受信任的。

54.从网络上加载的applet 和从本地文件系统加载的applet 有什么区别?

当applet 是从网络上加载的时候,applet 是由applet 类加载器载入的,它受applet

安全管理器的限制。

当applet 是从客户端的本地磁盘载入的时候,applet 是由文件系统加载器载入的。

从文件系统载入的applet 允许在客户端读文件,写文件,加载类库,并且也允许执行

其他程序,但是,却通不过字节码校验。

更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码

加QQ:1679806262

55.applet 类加载器是什么?它会做哪些工作?

北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090

当applet 是从网络上加载的时候,它是由applet 类加载器载入的。类加载器有自己的

java 名称空间等级结构。类加载器会保证来自文件系统的类有唯一的名称空间,来自网络

资源的类有唯一的名称空间。

当浏览器通过网络载入applet 的时候,applet 的类被放置于和applet

的源相关联的

私有的名称空间中。然后,那些被类加载器载入进来的类都是通过了验证器验证的。验证

器会检查类文件格式是否遵守Java 语言规范,确保不会出现堆栈溢出(stack overflow)或

者下溢(underflow),传递给字节码指令的参数是正确的。

56.applet 安全管理器是什么?它会做哪些工作?

applet 安全管理器是给applet 施加限制条件的一种机制。浏览器可以只有一个安全管

理器。安全管理器在启动的时候被创建,之后不能被替换覆盖或者是扩展。

Swing

57.弹出式选择菜单(Choice)和列表(List)有什么区别

Choice 是以一种紧凑的形式展示的,需要下拉才能看到所有的选项。Choice 中一次只

能选中一个选项。List 同时可以有多个元素可见,支持选中一个或者多个元素。

58.什么是布局管理器?

布局管理器用来在容器中组织组件。

59.滚动条(Scrollbar)和滚动面板(JScrollPane)有什么区别?

Scrollbar 是一个组件,不是容器。而ScrollPane 是容器。ScrollPane 自己处理滚动

事件。

60.哪些Swing 的方法是线程安全的?

只有3 个线程安全的方法:repaint(), revalidate(), and invalidate()。

黑马程序员训练营入学考试题

黑马程序员训练营入学考试题 1、写一个ArrayList类的代理,实现和ArrayList中完全相同的功能,并可以计算每个方法运行的时间。 2、ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList 中存放一个String类型的对象。 3、定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。 4、一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素,请用代码实现。

5、编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象,并调用该对象中的方法。 6、有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常。在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息。完成这个例子,请说出java中针对异常的处理机制。 7、存在一个JavaBean,它包含以下几种可能的属性: 1:boolean/Boolean 2:int/Integer 3:String 4:double/Double 属性名未知,现在要给这些属性设置默认值,以下是要求的默认值: String类型的默认值为字符串https://www.sodocs.net/doc/df6409166.html,

int/Integer类型的默认值为100 boolean/Boolean类型的默认值为true double/Double的默认值为0.01D. 只需要设置带有getXxx/isXxx/setXxx方法的属性,非JavaBean属性不设置,请用代码实现 8、定义一个文件输入流,调用read(byte[] b)方法将exercise.txt文件中的所有内容打印出来(byte数组的大小限制为5,不考虑中文编码问题)。 9、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。

JAVA测试题(三套含答案)

<测试一> 1.在单一文件中import、class和package的正确出现顺序是:A A.package, import, class B.class, import, package C.import, package, class D.package, class, import 2.public static void main方法的参数描述是:A,D A.String args[] B.Strings args[] C.String args D.String []args 3.下面哪行代码会在编译的时候出现错误或警告:A,B,C,D A.float f=1.3; B.char c="a"; C.byte b=257; D.boolean b=null; E.int i=10; 4.编译,运行下列代码后的结果是:D public class Test { public static void main (String args []) { int age; age = age + 1; System.out.println("The age is " + age); } } A.编译,运行后没有输出 B.编译,运行后输出:The age is 1 C.能通过编译,但运行时产生错误 D.不能通过编译 4.下面那些关键字不是JAVA的关键字B A if B then C goto D while E case 5.下面那些不是合法的变量定义:A,F A.2variable B.variable2 C. _whatavariable

D. _3_ E. $anothervar F. #myvar 6.内部数据类型byte的取值范围是B A.0 - 65, 535 B.(–128) – 127 C.(–32,768) – 32,767 D.(–256) – 255 7.下列哪些表达式返回true AB A."john" == "john" B."john".equals("john") C."john" = "john" D."john".equals(new Button("john")) 8.声明公用的abstract方法的正确格式是A A.public abstract void add(); B.public abstract void add() {} C.public abstract add(); D.public virtual add(); 9.下面的代码能打印出的结果为:C int i=1; switch (i) { case 0: System.out.println("zero"); break; case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } A.one B.one, default C.one, two, default D.default 10.下面的代码能打印出的结果为:B int i=9; switch (i) { default: System.out.println("default");

黑马Java_IO知识测试附答案

IO 部分测试题 考试宣言: 同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷! 我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业! 本套题共40道不定项选择题,其中单选30道,多选10道。单选2分/题,多选4分/题。多选题不全对半分,全对满分。 1.下列叙述中,正确的是 ( ) A. Reader是一个读取文本文件的接口 B. Reader是读取二进制数据文件的抽象类 C. Reader是一个读取文本文件的抽象类 D. Reader是读取二进制数据文件的一般类 2.下面关于IO流的说法正确的是( ) A. IO流可以分为字节流和字符流 B. FileReader和FileWriter是专门用于读取和写入文本文件的 C. 顶层类有InputStream和OutputStream D. 顶层类有Reader和Writer,他们都是接口//抽象类 3.FileReader类描述正确的是( ) A. 字节输入流 B. 字符输入流//没什么说的,记住吧 C. 打印流 D. 序列化流 4.下列关键字能和try一起使用的有( )

A. final B. finalize C. finally D. catch 5.具有readLine()方法的类是( ) A. FileWriter B. InputStreamReader C. FileReader D. BufferedReader // readLine()方法是缓冲流BufferedReader的特有方法 6.关于newLine()方法描述错误的是( ) A. newLine()方法写入换行 B. newLine()方法会根据不同操作系统自动选择使用相应的换行符 C. newLine()方法是FileWiter类的方法 D. newLine()方法是BufferedWriter类的方法// 这个也是特有方法. 7.实现下列哪个接口,可以启用序列化功能( ) A. Runnable接口 B. Comparable接口 C. Serializable接口// 这个记住吧 D. Comparator接口 8.以下关于java异常说法不正确的是()。 A. Throwable 类是 Java 语言中Error类和Exception类的父类。 B. 当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw 语句抛出该异常对象,并能通过try…catch…finally处理。 C. jdk6(包括jdk6)之前,如果只用一个catch块捕捉多个异常对象,则catch 子句中 的参数类型应是所有存在的异常对象的父类。 D. 以上说法都不对。 9.字节输出流的抽象基类是( ) A. OutputStream类 //记住吧,没什么说的. B. InputStream类 C. Writer类 D. Reader类 10.下面程序的运行结果是( )

传智播客-Java基础知识测试-初测(带答案)

传智播客-Java基础知识测试-初测(带答案)

答题格式: 1 - 30题为单选题, 31 - 40为多选题. 新建一个txt文件, 答案写在这个文件中. 答案必须保存为txt格式的文件。 答题的时候,可以在EditPlus上答题,会自动显示题目序号 文件名改为自己的名字, 每题一行. 多选题按abcd的顺序填答案, 比如某一题的答案acd, 就必须是acd, 不能是adc等等. 不能有空行, 不能有空格,不能有题目序号,一定不要某一题不会就空在那, 会导致后面的答案全都识别错了! 填完答案数一下, 不要填挪了!!! 共40道选择题,每题2.5分。多选题有错则全错,全对才满分.

单选题: 1. 下列哪个声明是错误的?() A. int i=10; B. byte b=127; C. float f=1.1; //1.1f D. double d=34.4; 2. 下面哪个不是java中的关键字?() A. public B. true C. class D. main 3. 下面哪个语句不会产生编译错误?() A. float a =2.0; //2.0f B. byte b =25; C. char c =”a”; D. boolean d=0; 4. 下面程序哪个语句是正确的()

A. byte a=0,b=3; byte c =a+b; B. short s =23; s=s+12; C. float f = 23+23.23; D. short s=23; s+=12; 5. byte类型的大小是() A. -228 ~128 B. -255 ~ 256 C. -128 ~ 127 D. -255 ~ 255 6. 下面程序执行的结果是?() int i = 100; while(true) { If ( i++ > 100 ) break; System.out.println(i); } A. 100 B. 101

黑马程序员java培训就业班笔记day05总结

黑马程序员java培训就业班笔记day05总结

Day05 上午: 1、数组的静态初始化 多种定义格式: Int[] arr=new int[]//标准格式,能够明确数组的数据类型,和数组名,可是不知道数组的长度Int arr[]=new int[] Int[] arr=new int[]{2,1,3,4,5,}//经过大括号能够标示出数组中的内容,此处最好别写长度,因为容易出错,因为即初始化实体,又初始化实体中的元素。 Int[] arr={2,1,3,4,5};//能够明确数组的数据类型,和数组名,也能够知道数组中的内容。 2、arr.length:方便获取数组中的元素个数的方式。 3、操作数组的最基础的思想以及核心思想: a)最基础的思想:就是遍历。什么是遍历。 Eg:int[] arr = new int[3]; int[] arr = {4,8,9,2,6,9};//明确了数组的类型和长度,并明确了数组中元素的内容。 // int[] arr1 = new int[]{4,8,9}; //方便获取数组中的元素个数的方式,

能够使用数组实体一个属性。length System.out.println("len:"+arr.length); for(int x=0; x

黑马Java基础入学测试题_

考试题目: 本试卷是JAVA基础班入学考试试卷,主要考察JAVA基础前五天大家在入学之前掌握的一个整体情况,本试卷共有40道题,其中有30道是单选,有10道题是多选题,希望大家认真对待 1.Sun公司对Java语言的宣传口号为“一次编程,到处执行”,体现了Java的什么特性B A:编程的简单性 B:与平台无关性 C:Java的面向对象特性 D:Java程序的鲁棒性 2.Java平台有三个版本,分别是javaSE、JavaME、javaEE,下列说法不正确的是B A.javaSE是指Java语言的标准版 B.javaME是指Java语言的标准版 C.javaEE是指企业级的Java开发语言,是为企业提供服务的 D. javaME是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API. 3.想要运行Java程序,必须得先通过______Java源文件,然后再通过______java程序C A. javaw工具编译 javac工具运行 B. java工具编译 javac工具运行 C. javac工具编译 java工具运行 D. java工具编译 java工具编译 4.Java语言中的int及char数据类型的长度分别为C A:16位和8 位 B:8位和16位 C:32位和16位 D:32位和8位 5.请问byte数据的取值范围是?C A:0-128

B:负127-128 C:负128-127 D:以上都不对 6.java语言的源程序经编译后所生成的程序类型为D A:.exe 型的可执行程序 B:.obj 型二进制的程序 C:.lib 型二进制的库程序 D:.class 型类代码的程序 7.某java程序的类定义如下: B class MyClass { } 则java源文件编译后生成的类文件名称为: A:myclass.class B:MyClass.class C:MYCLASS.class D:MyClass.java 8.下列那种标识符在java程序中是错误的D A:MyClass_Base12 B:_MyClass$Base12 C:$MyClass_12 D:76MyClass$12 9.下列那种标识符不能作为java程序中的变量名B A:INT B:boolean C:character D:Java_Float 10.请问,以下哪些语句不是合法的赋值语句?D A:boolean b = true; B:int a = (int)1.23; C:double x = 1.1; D:char c = '10';

黑马Java IO知识测试附答案

精品文档 IO 部分测试题 考试宣言: 同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷! 我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业! 本套题共40道不定项选择题,其中单选30道,多选10道。单选2分/题,多选4分/题。多选题不全对半分,全对满分。 ( )下列叙述中,正确的是1. A. Reader是一个读取文本文件的接口 B. Reader是读取二进制数据文件的抽象类 C. Reader是一个读取文本文件的抽象类 D. Reader是读取二进制数据文件的一般类 2.下面关于IO流的说法正确的是( ) A. IO流可以分为字节流和字符流 B. FileReader和FileWriter是专门用于读取和写入文本文件的 C. 顶层类有InputStream和OutputStream D. 顶层类有Reader和Writer,他们都是接口//抽象类 3.FileReader类描述正确的是( ) A. 字节输入流 B. 字符输入流//没什么说的,记住吧 C. 打印流 D. 序列化流 4.下列关键字能和try一起使用的有( )

A. final 精品文档. 精品文档 B. finalize C. finally D. catch 5.具有readLine()方法的类是( ) A. FileWriter B. InputStreamReader C. FileReader D. BufferedReader // readLine()方法是缓冲流BufferedReader的特有方法 6.关于newLine()方法描述错误的是( ) A. newLine()方法写入换行 B. newLine()方法会根据不同操作系统自动选择使用相应的换行符 C. newLine()方法是FileWiter类的方法 D. newLine()方法是BufferedWriter类的方法// 这个也是特有方法. 7.实现下列哪个接口,可以启用序列化功能( ) A. Runnable接口 B. Comparable接口 C. Serializable接口// 这个记住吧 D. Comparator接口 8.以下关于java异常说法不正确的是()。 A. Throwable 类是 Java 语言中Error类和Exception类的父类。 B. 当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw 语句抛出该异常对象,并能通过try…catch…finally处理。 C. jdk6(包括jdk6)之前,如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是所有存在的异常对象的父类。 D. 以上说法都不对。 9.字节输出流的抽象基类是( ) A. OutputStream类 //记住吧,没什么说的. B. InputStream类 C. Writer类 D. Reader类

黑马程序员基础测试题

黑马程序员基础测试题 1、已知一个int数组, 编程从数组中获取最大数. 2、编写一个方法(名字自定,但要符合Java编码规范),方法内打印一字符串,并在main()方法内调用它。 3、环境变量path和classpath的作用是什么? 系统环境 path 为了更方便应用java 开发工具将要执行命令的所在路径给系统、让系统去寻找方便执行、必须是可执行文件先找当前路径再找path 路径临时配置方式通过set 命令完成、设置查看环境变量的值在path环境变量的基础上添加新的目录在任意目录下执行java 执行程序专门给类文件设置路 径将class 文件所在目录告诉系统,让系统去寻找虚拟机先从classpath 寻找 4、 UDP协议与TCP协议有什么不同? 5、编写一个类Person,为Person类定义年龄、姓名两个属性,并且定义一个SayHello方法,方法执行时输出“我是***我的年龄是***”;定义一个Chinese 类从Person类继承。 6、创建一个包含有private的属性和private方法的类。然后创建一个内部类,它有一个方法可用来修改外部类的属性,并调用外部类的方法。在外部类的另一个方法中,创建此内部类的对象,并且调用它的方法。 7、用控制台程序输出九九乘法表;输出结果按下图所示: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ......... 8、编写程序拷贝一个文件, 尽量使用效率高的方式. 9、编写HTML注册表单, 需要字段: 用户名, 密码, 确认密码, 性别(单选), 城市(下拉列表), 兴趣爱好(多选), 个人简介(文本域). 10、定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性,创建5个对象, 属性可为任意值. 编程对这5个对象按成绩排序,并将结果输出。(提示,用TreeSet和Comparator实现)

【黑马基础班考试题】1.Java基础知识测试_答案

考试宣言: 同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷! 我的考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业! 本套题共40道不定项选择题,其中单选30道,多选10道。单选2分/题,多选4分/题。多选题不全对半分,全对满分。 1.下面说法正确的是() A. JVM就是Java虚拟机,包含java核心类库// JRE: JVM+Java library。 B. JRE就是java运行环境,包含java程序编译运行的工具环境// JDK:JRE+Tools C. JDK就是java开发环境,javac是其中的一个工具 D. 功能范围:JDK > JVM > JRE 2.下面的说法正确的是( ) A. Java 语言是面向对象的、解释执行的网络编程语言。 B. Java 语言具有可移植性,是与平台无关的编程语言。 C. Java 语言可对内存垃圾自动收集。 D. Java 语言编写的程序虽然是“一次编译,到处运行”,但必须要java的运行环境。 3.给定java代码,如下: public byte count(byte b1, byte b2){ return ____; } 要使这段代码能够编译成功,横线处可以填入 A. (byte)(b1-b2) //返回值类型为byte,要求选项结果为byte B. b1-b2 C. (byte)b1+b2

D. (byte)b1/b2 4.关于类的命名,正确说法是() A. 可以由数字和英文拉丁字母组成,且可以任意排序//数字不能开头 B. 命名要做到见名知意 C. 如果是由多个单词组成,每个单词首字母大写 D. 可以是Java已经定义过的关键字//囧 5.关于main方法说法错误的是() A.main方法是java程序执行的入口 B.main方法的方法体至少要有一行代码//可以没有代码 C.main必须定义在一个类中 D. main方法的定义格式为:public static void main(String[] args){} 6.类中某方法定义如下: double fun(int a,int b){ return a*1.0/b; } 同一类内其它方法调用该方法的正确方式是: A. double a = fun(1,2); B. double a = fun(1.0,2.0); C. int x = fun(1,2); D. int x = fun(1.0,2.0); 7.给定java代码,如下,编译运行,结果是() public static void main(String[] args){ boolean flag; System.out.println(“flag”+flag);//局部变量需要先初始化再使用 } A. 编译错误 B. 编译通过,单出现运行时错误 C. 正常运行,输出flag=false D. 正常运行,输出flag= 8.下面哪个关键字可以定义一个类() A. interface B. class //查看下面解释 C. extends D. implements 在Oracle官网java英文原版教程,链接地址: https://https://www.sodocs.net/doc/df6409166.html,/javase/tutorial/java/IandI/createinterface.html上有如下解释:In the Java programming language, an interface is a reference type,similar to a class, that can contain only constants,

【黑马程序员】Java笔试中常见的问题及经典答案

【黑马程序员】Java笔试中常见的问题及经典答案1、java中实现多态的机制是什么? 答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。 2、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收 答:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。 3、静态变量和实例变量的区别? 答:static i = 10; //常量class A a; a.i =10;//可变 4、什么是java序列化,如何实现java序列化?

答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。 5、是否可以从一个static方法内部发出对非static方法的调用?答:不可以,如果其中包含对象的method();不能保证对象初始化. 6、写clone()方法时,通常都有一行代码,是什么? 答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。 7、在JAVA中,如何跳出当前的多重嵌套循环? 答:用break; return 方法。

【黑马程序员】面试中常见Java面试题

【黑马程序员】面试中常见Java面试题 Java 面试中常见面试问题: 1. JDK 和JRE 有什么区别? 2. == 和equals 的区别是什么? 3. 两个对象的hashCode() 相同,则equals() 也一定为true,对吗? 4. final 在Java 中有什么作用? 5. Java 中的Math. round(-1. 5) 等于多少? 6. String 属于基础的数据类型吗? 7. Java 中操作字符串都有哪些类?它们之间有什么区别? 8. String str="i"与String str=new String("i")一样吗? 9. 如何将字符串反转? 10. String 类的常用方法都有那些? Java 面试中常见面试题答案: 1. JDK 和JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为Java 的运行提供了所需环境。 具体来说JDK 其实包含了JRE,同时还包含了编译Java 源码的编译器Javac,还包含了很多Java 程序调试和分析的工具。简单来说:如果你需要运行Java 程序,只需安装JRE 就可以了,如果你需要编写Java 程序,需要安装JDK。 2. == 和equals 的区别是什么? == 解读 对于基本类型和引用类型== 的作用效果是不同的,如下所示:

基本类型:比较的是值是否相同; 引用类型:比较的是引用是否相同; 代码示例: String x = "string"; String y = "string"; String z = new String("string"); System.out.println(x==y); // true System.out.println(x==z); // false System.out.println(x.equals(y)); // true System.out.println(x.equals(z)); // true 代码解读:因为x 和y 指向的是同一个引用,所以== 也是true,而new String()方法则重写开辟了内存空间,所以== 结果为false,而equals 比较的一直是值,所以结果都为true。 equals 解读 equals 本质上就是==,只不过String 和Integer 等重写了equals 方法,把它变成了值比较。看下面的代码就明白了。 首先来看默认情况下equals 比较一个有相同值的对象,代码如下: class Cat { public Cat(String name) { https://www.sodocs.net/doc/df6409166.html, = name; } private String name; public String getName() { return name;

【黑马程序员】Java面试种常见的编程代码笔试题

【黑马程序员】Java面试种常见的编程代码笔试题《java基础教程(编程就像打字一样简单)》 完整视频:https://www.sodocs.net/doc/df6409166.html,/course/375.html?1912sxkqq 课程资料:https://https://www.sodocs.net/doc/df6409166.html,/s/1OSl2X8SgQue67KCg-ZZ5Gg 提取码:78lv 1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询. 答:程序如下: package hello.ant; import java.sql.*; public class jdbc { String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; String theUser="admin"; String thePw="manager"; Connection c=null; Statement conn; ResultSet rs=null; public jdbc() { try{

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); c = DriverManager.getConnection(dbUrl,theUser,thePw); conn=c.createStatement(); }catch(Exception e){ e.printStackTrace(); } } public boolean executeUpdate(String sql) { try { conn.executeUpdate(sql); return true; } catch (SQLException e) { e.printStackTrace(); return false; } } public ResultSet executeQuery(String sql) {

黑马就业班java测试题

传智播客java就业班入学测试题 共50道题,每道题2分,总分100分,80分为合格。 注意,题目有多选,也有单选。请认真作答。 1.在JAVA中,下列哪些说法是正确的(ac ) A.java源文件的扩展名为.java B.写好的java源程序可以直接运行 C.编写的源程序必须先编译后才能运行 D.程序员可以读懂扩展名为.class的文件 2.下列标识符哪个是合法的(bd ) A.class B.$abc C.1234 D._name 3.下面哪些赋值语句是正确的?(abd ) A. long test = 012; //八进制0,二进制0b,十六禁止0x B. float f = -412; C. int other = (int) true; //不可以转换 D. double d = 0x12345678; E. byte b = 128; //损失精度 4.在Java中,下列语句不能通过编译的有( ac) A. String s= “join”+ 3; B. int a= “join”+3; C. int a= …a?+5; D. float f=5+5.5; 5.设 a = 3,则表达式 (--a )<

if(x++>4 & ++y>5) { x++; } System.out.println("x=" + x + ",y=" + y); } A. x=4,y=5 B. x=4,y=6 C. x=5,y=6 D. x=6,y=6 7.尝试运行下面的代码会发生什么?( b) public class Test { public static void main(String[] args) { boolean m = true; if (m = false) { System.out.println("true"); } else { System.out.println("false"); } } } A. 输出字符串”true” B. 输出字符串”false” C. 编译时错误 D. 运行时错误 8.编译并运行以下代码将发生什么?( d) public static void main(String args[]){ char digit = 'a'; for (int i = 0; i < 10; i++){ switch (digit) { case 'x' : { int j = 0; System.out.println(j); } default : { int j = 100; System.out.println(j); } }

黑马程序员Java教程:String类-练习(一)

String类 --练习(一) 1、给定一个字符串数组,按照字典顺序进行从小到大的排序。{"nba","abc","cba","zz","qq","haha"} 思路: ①对数组排序,可以用选择,冒泡都行。 ②for嵌套、比较以及换位。 ③使用String类中提供的用于字符串比较的功能进行比较。 代码: 1.public class StringTest{ 2. public static void main(String[] args){ 3. String[] arr = { "nba","abc" ,"cba" ,"zz" ,"qq" ,"haha" }; 4. 5. printArray(arr); 6. sortString(arr); 7. printArray(arr); 8. } 9. 10. public static void printArray(String[] arr){ 11. System.out.print( "["); 12. for(int i = 0; i < arr.length; i++){ 13. if(i != arr.length -1) 14. System.out.print(arr[i] + ","); 15. else 16. System.out.println(arr[i] + "]"); 17. } 18. } 19. 20. public static void sortString(String[] arr){

21. for(int i = 0; i < arr.length - 1; i++){ 22. for(int j = i + 1; j < arr.length; j++){ 23. if(arr[i].compareTo(arr[j])>0){ 24. swap(arr,i,j); 25. } 26. } 27. } 28. } 29. 30. private static void swap(String arr[],int i, int j){ 31. String temp = arr[i]; 32. arr[i] = arr[j]; 33. arr[j] = temp; 34. } 35.} 36. 运行结果: 2、一个子串在整串中出现的次数"nbaernbatynbauinbaopnba" 思路: ①要找的子串是否存在,如果存在获取其出现的位置,这个可以使用indexOf 完成。

Java就业班第二阶段测试题

Java就业班第二阶段测试题2005-7-20 姓名:分数: 一、选择题 1.给定下列代码,哪一种请求方法将被调用?

输入想上传的文件:
A. PUT B. POST C. GET D. HEAD 2.下列标记中,哪一个是用来创建一个下拉列表的? A. B. C. 3. 给定下列请求URI,哪一个是最好的关于上下文路径的描述? /cars/sportsCars/index.html A. /cars B. /cars/sportsCars C. /sportsCars D. 缺乏足够的信息来确定答案 4 . ServletContext对象可以从下边哪一个对象直接访问到? A. HttpServlet B. ServletRequest C. ServletConfig D. ServletResponse 5. 下列哪个XML标记应用于整个应用程序而不是某个Servlet? A.mime-mapping B.init-param C.context-param D.session-config

2020年Java面试题50道Java面试题

2020年Java面试题50道Java面试题 黑马程序员免费视频库:https://www.sodocs.net/doc/df6409166.html,?2020sxkyk 以下的内容是对原有的和最近Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,相对来说比较经典,相信对准备入职的Java程序员一定有所裨益。 21、描述一下JVM 加载class文件的原理机制? 答:JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的Java 运行时系统组件,它负责在运行时查找和装入类文件中的类。 补充: 1.由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化,包括:1如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2如果类中存在初始化语句,就依次执行这些初始化语句。

2.类的加载是由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(https://www.sodocs.net/doc/df6409166.html,ng.ClassLoader的子类)。从JDK 1.2开始,类加载过程采取了父亲委托机制(PDM)。PDM更好的保证了Java平台的安全性,在该机制中,JVM 自带的Bootstrap是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。JVM不会向Java程序提供对Bootstrap的引用。下面是关于几个类加载器的说明: a)Bootstrap:一般用本地代码实现,负责加载JVM基础核心类库(rt.jar); b)Extension:从java.ext.dirs系统属性所指定的目录中加载类库,它的父加载器是Bootstrap; c)System:又叫应用类加载器,其父类是Extension。它是应用最广泛的类加载器。它从环境变量classpath或者系统属性java.class.path所指定的目录中记载类,是用户自定义加载器的默认父加载器。 黑马程序员视频库网址:https://www.sodocs.net/doc/df6409166.html,(海量热门编程视频、资料免费学习) 学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 3285264708 / 3549664195 22、char 型变量中能不能存贮一个中文汉字?为什么? 答:char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char类型占2个字节(16bit),所以放一个中文是没问题的。

相关主题