1.默认RMI采用的是什么通信协议?
A.HTTP B.UDP/IP C.TCP/IP D.Multicast 选C RMI采用的是TCP/IP协议2.下面关于volatile的功能说法正确的是哪个
A.原子性 B.有序性 C.可见性 D.持久性 选BC synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性 volatile到底做了什么: (1)禁止了指令重排 (2)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量值,这个新值对其他线程是立即可见的 (3)不保证原子性(线程不安全) synchronized关键字和volatile关键字比较: volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是volatile关键字只能用于变量而synchronized关键字可以修饰方法以及代码块。synchronized关键字修饰非静态方法是给非静态方法加锁,修饰静态方法时相当于给类加锁。synchronized关键字 多线程访问volatile关键字不会发生阻塞,而synchronized关键字可能会发生阻塞 volatile关键字能保证数据的可见性,但不能保证数据的原子性。synchronized关键字两者都能保证。 volatile关键字主要用于解决变量在多个线程之间的可见性,而 synchronized关键字解决的是多个线程之间访问资源的同步性。3.关于 访问权限说法正确 的是 ? ( )
A.外部类定义前面可以修饰public,protected和private B.局部内部类前面可以修饰public,protected和private C.匿名内部类前面可以修饰public,protected和private D.以上说法都不正确 选D 在Java中,可以将一个类定义在另一个类里面或者一个方法里边,这样的类称为内部类,广泛意义上的内部类一般包 括四种:成员内部类,局部内部类,匿名内部类,静态内部类 。 1.成员内部类 (1)该类像是外部类的一个成员,可以无条件的访问外部类的所有成员属性和成员方法(包括private成员和静态成 员); (2)成员内部类拥有与外部类同名的成员变量时,会发生隐藏现象,即默认情况下访问的是成员内部类中的成员。如 果要访问外部类中的成员,需要以下形式访问:【外部类.this.成员变量 或 外部类.this.成员方法】; (3)在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访 问; (4)成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一个外部类的对 象; (5)内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。如果成员内部类 用private修饰,则只能在外部类的内部访问;如果用public修饰,则任何地方都能访问;如果用protected修 饰,则只能在同一个包下或者继承外部类的情况下访问;如果是默认访问权限,则只能在同一个包下访问。外部类只 能被public和包访问两种权限修饰。 2.局部内部类 (1)局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方 法内或者该作用域内; (2)局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰 符的。 3.匿名内部类 (1)一般使用匿名内部类的方法来编写事件监听代码; (2)匿名内部类是不能有访问修饰符和static修饰符的; (3)匿名内部类是唯一一种没有构造器的类; (4)匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写。 4.内部静态类 (1)静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似; (2)不能使用外部类的非static成员变量或者方法。 总结: 对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包 不可见。 对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。4.对于线程局部存储TLS(thread local storage),以下表述正确的是
A.解决多线程中的对同一变量的访问冲突的一种技术 B.TLS会为每一个线程维护一个和该线程绑定的变量的副本 C.每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了 D.Java平台的java.lang.ThreadLocal是TLS技术的一种实现 选ACD5.以下代码结果是什么?
public class foo { public static void main(String sgf[]) { StringBuffer a=new StringBuffer(“A”); StringBuffer b=new StringBuffer(“B”); operate(a,b); System.out.println(a+”.”+b); } static void operate(StringBuffer x,StringBuffer y) { x.append(y); y=x; } } A.代码可以编译运行,输出“AB.AB”。 B.代码可以编译运行,输出“A.A”。 C.代码可以编译运行,输出“AB.B”。 D.代码可以编译运行,输出“A.B”。 选C 引用a指向对象A 引用b指向对象B 引用x指向对象A 引用y指向对象B 在operate方法中,引用x指向的对象A被连接了B,对象A也就被改变为AB 然后又把引用y指向了x所指向的对象地址,也就是此时引用a,x,y指向同一个对象AB 而引用b没有发生任何变化,依旧指向对象B。6.关于运行时常量池,下列哪个说法是正确的
A.运行时常量池大小受栈区大小的影响 B.运行时常量池大小受方法区大小的影响 C.存放了编译时期生成的各种字面量 D.存放编译时期生成的符号引用 选BCD 在JDK1.8之前运行时常量池被放在方法区,属于线程共享,JDK1.8之后,元空间取代了方法区,运行时常量池被也被放 在元空间中,运行时常池 主要存放, class文件元信息描述,编译后的代码,引用类型数据,类文件常量池。所谓的运 行时常量池其实就是将编译后的类信息放入运行时的一个区域中,用来动态获取类信息。运行时常量池是在类加载完成 之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池,类 在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。 运行时常量池是方法区的一部分。Class 文件中除了有类的版本、字段、方法、接口等描述信息外,还有常量池信息 (用于存放编译期生成的各种字面量和符号引用) 运行时常量池(Runtime Constant Pool)是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池(Constant Pool Table),用于存放编译器生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。7.What will be printed when you execute the following code?
class C { C() { System.out.print("C"); } } class A { C c = new C(); A() { this("A"); System.out.print("A"); } A(String s) { System.out.print(s); } } class Test extends A { Test() { super("B"); System.out.print("B"); } public static void main(String[] args) { new Test(); } } A.BB B.CBB C.BAB D.None of the above 选B 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法; 4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法; (1)初始化父类的普通成员变量和代码块,执行 C c = new C(); 输出C (2)super("B"); 表示调用父类的构造方法,不调用父类的无参构造函数,输出B (3) System.out.print("B"); 所以输出CBB8.下列说法错误的有( )
A.能被java.exe成功运行的java class文件必须有main()方法 B.J2SDK就是Java API C.Appletviewer.exe可利用jar选项运行.jar文件 D.能被Appletviewer成功运行的java class文件必须有main()方法 选BCD B :J2Sdk是Sun公司开发的编程工具。 java api是应用程序接口 C:JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件 。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。打开方式java -jar AppletViewer是与html有关的 appletviewer.exe执行选项参数中并没有jar选项。 D:appletviewer 提供了一个Java运行环境,在其中可测试小应用程序Applet。appletviewer 读取包含小应用程序的HTML文件并在一个窗口中运行它们。9.关于C++/JAVA类中static 成员和对象成员的说法正确的是?
A.static 成员变量在对象构造时生成 B.static 成员函数在对象成员函数中无法调用 C.虚成员函数不可能是static 成员函数 D.static 成员函数不能访问static 成员变量 选C static所修饰的成员变量或者是成员方法,在类加载时完成初始化,并且可以被成员函数调用或访问 在java语言中虚函数指代的就是抽象方法,抽象方法中不能用private,static, synchronized,native等修饰词修饰。10.URL u =new URL(“http://www.123.com”);。如果www.123.com不存在,则返回______。
A.http://www.123.com B.”” C.null D.抛出异常 选A 我们在执行URL u =new URL("http://www.123.com");这句话的时候确实要抛出异常,但是这个异常属于IOException,不管网址是否存在,最后都会返回该网址的一个连接,打印出来就是该网址。java初始化的加载顺序为:
父类静态成员变量 父类静态代码块 子类静态成员变量 子类静态代码块 父类非静态成员变量,父类非静态代码块,父类构造函数,子类非静态成员变量,子类非静态代码块,子类构造函数
Java标识符由数字、字母、下划线(_)、美元符号($)或人民币(¥)组成,首位不能是数字。并且Java关键字不能作为标识符。
11.以下哪一个正则表达式不能与字符串“https://www.tensorflow.org/”(不含引号)匹配?()
A.[a-z]+://[a-z.]+/ B.https[://]www[.]tensorflow[.]org[/] C.[htps]+://www.tensorflow.org/ D.[a-zA-Z.:/]+ 选B B. [://] 表示匹配 :// 中的任何一个字符,也就是匹配 : 或 / C. [htps] 表示匹配 htps 中的任何一个字符,[htps]+ 表示一次或多次匹配前面的字符或子表达式,所以 [htps]+ 可以匹配 https12.以下代码执行的结果显示是多少()?
A.505000 B.0 C.运行时错误 D.5050 选B count = count++ 原理是 temp = count; count = count+1 ; count = temp; 因此count始终是0静态方法是一个属于类而不属于对象(实例)的方法。(√)
静态方法只能访问静态数据。无法访问非静态数据(实例变量)。(√)
静态方法只能调用其他静态方法,不能从中调用非静态方法。(√)
静态方法不能通过类名直接访问,也不需要任何对象。(×) 静态方法可以直接用类名访问。
13.某程序要求每次输入只能是正整数,并且每次输入的数值要求必须是100的倍数且小于等于500,则下列哪个是正确的无效等价类( )
A.(0,100)、(100,200)、(200,300)、(300,400)、(400,500)、(500,+∞); B.(500,+∞) C.(500,+∞)、任意大于0小于500的非100倍数的整数; D.(-∞,100)、(100,200)、(200,300)、(300,400)、(400,500)、(500,+∞); 选C 无效等价类和有效等价类相反,即不满足程序输入要求或者无效的输入数据构成的集合。 无效等价类是指对于软件规格说明而言,是没有意义的、不合理的输入数据集合。利用无效等价类可以找出程序异常说明情况,检查程序的功能和性能的实现是否有不符合规格说明要求的地方。 有效等价类是指输入数据完全满足程序输入的规格说明,是有效、有意义的输入数据所构成的集合。利用有效等价类可以检验程序是否满足规格说明所规定的功能和性能。 应该选 C,因为C的后面一句话是已经排除了负数中的100的整数倍了14.下面有个hibernate延迟加载,说法错误的是?
A.Hibernate2延迟加载实现:a)实体对象 b)集合(Collection) B.Hibernate3 提供了属性的延迟加载功能 C.get支持延迟加载,load不支持延迟加 D.hibernate使用Java反射机制,而不是字节码增强程序来实现透明性 选C load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当 我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个***对象,这个***对象只保存了实 体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象。 相对于load的延迟加载方式,get就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们使不使用这个对象,此时都会发出sql语句去从数据库中查询出来。15.Choose the correct ones from the following statements:
A.A class can implement more than one interfaces B.A class can extend more than one class C.An interface has at least one method declared. D.An abstract class which has no abstract methods declared is legal 选AD 1、一个类可以有多个接口; 2、一个类只能继承一个父类; 3、接口中可以不声明任何方法,和成员变量 interface testinterface{ } 4、抽象类可以不包含抽象方法,但有抽象方法的类一定要声明为抽象类 abstract class abstclass{ abstract void meth(); }抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。
在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final 在接口中的方法,永远都被public来修饰
16.jre 判断程序是否执行结束的标准是()
A.所有的前台线程执行完毕 B.所有的后台线程执行完毕 C.所有的线程执行完毕 D.和以上都无关 选A 使用Thread建立的线程默认情况下是前台线程,在进程中,只要有一个前台线程未退出,进程就不会终止。主线程就是一个前台线程。而后台线程不管线程是否结束,只要所有的前台线程都退出(包括正常退出和异常退出)后,进程就会自动终止。17.以下代码段执行后的输出结果为
public class Test { public static void main(String args[]) { int x = -5; int y = -12; System.out.println(y % x); } } A.-1 B.2 C.1 D.-2 选D %是取余,余数和被除数符号一致 mod是取模,和除数符号一致18.下列哪个选项是正确计算42度(角度)的余弦值?
A.double d=Math.cos(42) B.double d=Math.cosine(42) C.double d=Math.cos(Math.toRadians(42)) D.double d=Math.cos(Math.toDegrees(42)) 选C Math.cos为计算弧度的余弦值,Math.toRadians函数讲角度转换为弧度19.下面几个关于Java里queue的说法哪些是正确的()?
A.LinkedBlockingQueue是一个可选有界队列,不允许null值 B.PriorityQueue,LinkedBlockingQueue都是线程不安全的 C.PriorityQueue是一个无界队列,不允许null值,入队和出队的时间复杂度是O(log(n)) D.PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原则 选AC LinkeBlockingQueue: 1.基于结点链接的阻塞线程队列,不允许null值 2.线程安全,既然是阻塞线程的队列,自然FIFO PriorityQueue: 1.基于优先级堆的无限优先级queue,不允许Null值,时间复杂度为O(log(n)) 2.与常规的FIFO栈不同,这个栈每次只返回优先级最高的元素 ConcurrentLinkedQueue: 1.一个基于结点的***的队列,遵循线程安全和FIFO20.关于中间件特点的描述.不正确的是()
A.中间件运行于客户机/服务器的操作系统内核中,提高内核运行效率 B.中间件应支持标准的协议和接口 C.中间件可运行于多种硬件和操作系统平台上 D.跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互 选A 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系 统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。 中间件位于操作系统之上,应用软件之下,而不是操作系统内核中 (简单来说,中间件并不能提高内核的效率,一般只是负责网络信息的分发处理) 中间件特点的描述: 1. 中间件应支持标准的协议和接口 2. 中间件可运行于多种硬件和操作系统平台上 3. 跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互器的操作系统内核中,提高内核运行效率 B.中间件应支持标准的协议和接口 C.中间件可运行于多种硬件和操作系统平台上 D.跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互
选A 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系 统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。 中间件位于操作系统之上,应用软件之下,而不是操作系统内核中 (简单来说,中间件并不能提高内核的效率,一般只是负责网络信息的分发处理) 中间件特点的描述:
中间件应支持标准的协议和接口中间件可运行于多种硬件和操作系统平台上跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互