本文写给正在努力的自己,努力的补基础知识,五道题一篇

ps:我把答案都放在解析下面了

  1. 关于容器下面说法正确的是()
    A.列表(list)和集合(set)存放的元素都是可以重复的
    B.列表(list)和集合(set)存放的元素都是不可以重复的
    C.映射(Map)<key,value>中的key是可以重复的
    D.映射(Map)<key,value>中的value是可以重复的

解析:list中存放的元素可以重复且有序,而Set中的元素不可以重复且无序,Map中的key是不可以重复的,而value能重复

答案:D

  1. 下面哪个不属于HttpServletResponse接口完成的功能?
    A.设置HTTP头标
    B.设置cookie
    C.读取路径信息
    D.输出返回值

解析:HttpServletResponse是服务器打包信息传给客户端的,HttpServletRequest是客户端发送给服务器的请求,HttpServletResponse接口无法读取路径信息,它可以设置HTTP头标,输出返回值和设置cookie

答案:C

  1. java程序内存泄露的最直接表现是( )
    A.频繁FullGc
    B.jvm崩溃
    C.程序抛内存控制的Exception
    D.java进程异常消失

解析:首先我们了解一下内存泄漏的概念,内存泄漏是什么?
内存泄漏就是对象引用消失,但是对象内存缺没有被回收,就像餐厅,如果一桌客人吃完走了,但是没人收拾桌子,下一桌客人就无法进行堂食,慢慢的就不能招待初始的人数,但是城管不让在门口摆摊,新来的客人就没地方吃饭了
明白了内存泄漏是啥之后我们来看选项
A.FullGC是老年代内存空间不足的时候,才会触发的,老年代一般是生命周期较长的对象或者大对象,频繁的FullGC会影响程序的性能(因为内存回收需要消耗CPU等资源)但是并不会直接导致内存泄漏
B.JVM崩溃的可能是内存溢出引起的,也可能是其他导致JVM崩溃的操作,例如设置了错误的JVM参数等等
C.内存异常,最常见的就是StackOverFlow了,内存溢出,其实内存泄漏的最终最终结果
D.明显不对

答案:C

  1. 以下代码输出了什么?
public class Demo1 {
    private static void test(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            try {
                if (arr[i] % 2 == 0) {
                    throw new NullPointerException();
                } else {
                    System.out.print(i);
                }
            } finally {
                System.out.print("e");
            }
        }
    }
    public static void main(String[] args) {
        try {
            test(new int[]{0, 1, 2, 3, 4, 5});
        } catch (Exception e) {
            System.out.print("E");
        }
    }
}

解析:注意看if的下一行,是程序员自行抛出空指针异常,虽然上面代码没错,但是一旦走到了自行抛出空指针的时候就会自动调到finally中,由于arr[0] =0,所以在进入test()方法里面会在第一个if 上抛出一个 NullPointerException,接着会执行 finally 的语句,(finally语句先于 return 和 throw语句执行),输出一个’e,然后回到 main方法中,由于捕捉到异常,所以进入到catch语句中,然后打印一个’E’,抛异常后程序就自动退出了,不再继续执行所以最终结果为"eE"。

答案:eE

  1. 久违的文字题
  1. Java多线程有三种实现方法:第一种,继承Thread类,并重写run()方法,第二种实现Runnable接口,实现run()方法,第三种实现Callable接口,线程结束后可以有返回值,但是该方法依赖于线程池
  2. 如果希望兼听tcp端口9000,服务器端应该怎么创建socket:new ServletSocket(9000);
  3. Java中重写方法应该遵循的规则有:1.可以有不同的访问修饰符。2.参数列表必须完全与被重写的方法相同