记录了一次JAVA笔试的部分题目及自己后续的理解

Posted taozi1115402474

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录了一次JAVA笔试的部分题目及自己后续的理解相关的知识,希望对你有一定的参考价值。

笔试一个小时一共37个题,有单选多选最后2题程序设计。没有正确答案所以是按照我的理解写的,有问题希望各位大佬指出。

最后两个程序设计题1.整数翻转。2.合并数组。

总结:题目比较基础,做起来还算顺利,但在spring、epoll和select、会话跟踪、linux命令、dns上比较薄弱,后续会加强学习这些方面的知识。

//本题考察的是==和equals的区别,和string常量
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x == y);//==号比较的是地址,但String类型常量存放在常量池中,取得时候直接去常量池取出数据比较
System.out.println(x == z);//z由于是一个引用对象,指向的是堆内存,所以不同
System.out.println(x.equals(y));//equals跟==的区别就是一个是比较值,一个是比较地址
System.out.println(x.equals(z));
//这份代码的返回结果为True False True True
//本题考察的是类型转换
public static void main(String[] args) {
    class Foo {
        public int i = 3;
    }
    Object o = (Object) new Foo();//根据Foo来创建一个Object对象。请注意此时o是Object类型的引用,不能根据o来访问Foo对象的field,比如这里的i
    Foo foo = (Foo) o;//将Object对象转型为Foo类型,并赋给引用foo。请注意这里并没有生成新对象,所以o==foo的结果是true。但是foo是一个Foo类型的引用,所以可以直接使用foo.i的方式来访问Foo对象的field
    System.out.println(foo.i);
}
//这份代码的返回结果为3
//本题考察的是包装类,==和equals的区别
Integer x = 128;
Integer y = 128;
Integer a = new Integer(128);
Integer b = new Integer(128);
System.out.println(x == y);//常量池[-128,127],若Integer的值在范围内则会直接返回常量池中的值,否则会new Integer()出一个对象
System.out.println(a == b);//比较的是地址不是值
System.out.println(x.equals(a));
//这份代码的返回结果为False False True
//本题考察的是try/catch/finally和return的关系
int add() {
    int a = 10;
    try {
        System.out.println(a / 0);//1.抛出异常
        a += 10;
    } catch (ArithmeticException e) {//2.catch到异常,此时a=20,执行return
        a += 10;
        return a;
    } finally {//3.执行return后暂存返回的内容后接着执行finally,最后return
        a += 10;
    }
    return a;
}
//这份代码的返回结果为20
//本题考察的知识点如上
public static void main(String[] args) {
    AtomicInteger A = new AtomicInteger(10);
    System.out.println(getA(A).get());
}

private static AtomicInteger getA(AtomicInteger A) {//传入引用,返回引用
    try {
        System.out.println(A.get() / 0);//1.抛出异常
        A.addAndGet(10);
    } catch (ArithmeticException e) {//2.catch住,A=20,return
        A.addAndGet(10);
        return A;
    } finally {//3.执行return后会暂存返回的内容后接着执行finally,最后return,这里因为返回的内容是引用,所以出现finally代码块中的修改有效
        A.addAndGet(10);
    }
    return A;
}
//这份代码的返回结果为30

//总结try/catch/finally和return的关系
//try和catch中的return先于finally,若finally块对返回值为引用类型的进行修改则会影响return的结果
//1.try中有return
//2.catch中有return
//3.finally中有return,注意finally中的return会覆盖try和catch的return,不建议写
//本题考察的是格式化日期
public static void main(String[] args) {
    Date date = new Date();
    System.out.printf("%tD%n", date);//首先%n和
都是换行,但%n可以根据windows 
和linux 
而选择不同的换行方式
}
//这份代码的返回结果为07/22/20

//使用printf格式化日期,使用两个字母表示,它以%t开头并以下面的一个字母结尾
//c 包括全部日期和时间信息 星期三 七月 22 17:25:51 CST 2020
//F "年-月-日"格式 2020-07-22
//D "月/日/年"格式 07/22/20
//r "HH:MM:SS PM"格式(12时制)05:25:51 下午
//T "HH:MM:SS"格式(24时制)17:25:51
//R "HH:MM"格式(24时制)17:28
//本题考察的是TreeSet中的subSet方法
public static void main(String[] args) {
    TreeSet<Integer> set = new TreeSet<>();
    TreeSet<Integer> subSet = new TreeSet<>();
    for (int i = 606; i < 613; i++) {
        if (i % 2 == 0) {
            set.add(i);
        }
    }
    subSet = (TreeSet)set.subSet(608, true, 611, true);
    set.add(629);
    System.out.println(set + " " + subSet);
}
//这份代码的返回结果为[606, 608, 610, 612, 629] [608, 610]
//TreeSet底层红黑树,实现了NavigableSet<E>,该接口继承自SortedSet<E>,然后该方法返回的是集合中[fromElement,toElement]的所有元素,两个boolean为是否包含首尾
//public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) {
//  return new TreeSet<>(m.subMap(fromElement, fromInclusive, toElement, toInclusive));
//}

 

以上是关于记录了一次JAVA笔试的部分题目及自己后续的理解的主要内容,如果未能解决你的问题,请参考以下文章

哪里有java笔试题

muduo2.0源码阅读记录

Java开发框架!百度笔试题目及答案

Java笔试面试题目

Java笔试面试题目

求最新JAVA面试题目,越全越好!!!