题目皆摘自牛客网JAVA专项练习
1.
start()方法时执行线程
join()方法是停止当前正在运行的线程
run()方法是线程所执行的方法体
synchronized是同步代码块加锁解锁用的
2.
D。final类型的变量一定要初始化,因为final的变量不可更改。
3.
this不能在static的方法中使用~
4.
1、子类构造函数调用父类构造函数用super
2、子类重写父类方法后,若想调用父类中被重写的方法,用super
3、未被重写的方法可以直接调用。
5.
6.
this()才必须是构造函数中的第一个可执行语句,用this调用语句并不需要。
super,this关键字 与 super(),this()不是一回事,前者表示当前调用者的父类与其本身,后者是为了构造器相互调用。
7.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。 (正确)
8.用户不能调用构造方法,只能通过new关键字自动调用。(错误)
- 在类内部可以用户可以使用关键字this.构造方法名()调用(参数决定调用的是本类对应的构造方法)
- 在子类中用户可以通过关键字super.父类构造方法名()调用(参数决定调用的是父类对应的构造方法。)
- 反射机制对于任意一个类,都能够知道这个类的所有属性和方法,包括类的构造方法。
9.
10.
ThreadLocalMap中使用开放地址法来处理散列冲突,而HashMap中使用的是分离链表法。
之所以采用不同的方式主要是因为:在ThreadLocalMap中的散列值分散得十分均匀,很少会出现冲突。并且ThreadLocalMap经常需要清除无用的对象,使用纯数组更加方便。
11.
getParameter()是获取POST/GET传递的参数值;
getInitParameter获取Tomcat的server.xml中设置Context的初始化参数getAttribute()是获取对象容器中的数据值;
getRequestDispatcher是请求转发。
12.
不会初始化子类的几种
1. 调用的是父类的static方法或者字段
2.调用的是父类的final方法或者字段
3. 通过数组来引用
13.
在java语言中,判断一块内存空间是否符合垃圾收集器收集标准的标准只有两个:
1.给对象赋值为null,以下没有调用过。
2.给对象赋了新的值,重新分配了内存空间。
附加面试题:
问:
线程和进程的区别?
答:
进程是资源分配的最小单位,线程是资源调度的最小单位,通俗一点理解就是计算机在分配内存资源时最小是按照一个进程来划分的,而一个进程有若干个线程,每一个线程在执行时是对资源的调度最小的单位。
进程与进程之间的资源是相互独立的,而同一个进程内的线程资源是共享的。
从系统开销来说 进程的开销大,而线程开销小。