2019初级JAVA面试题(一)

JAVA开发工程师笔试题

1. 下列哪个叙述是正确的()

A) class中的constructor不可省略

B) Constructor必须与class同名,但方法不能与class同名

C) Constructor在对象被new时执行

D) 一个class只能定义一个constructor

答案:C

解析:class中的constructor是可以省略的;Constructor必须与clas同名,方法也可以与class同名,区别在于方法必须要有void或具体返回值类型;Constructor在对象被new的时候执行,如果该对象有父类的话会在当前对象的构造方法中默认先调用父类的构造方法super();class的constructor构造方法是支持重载的,所以一个class可以定义多个constructor。

 

2.下列哪个描述是正确的()

A) 子类继承父类的构造方法

B) Abstract类的子类必须是非abstract类

C) 子类继承的方法只能操作子类继承和隐藏的成员变量

D) 子类重写或新增的方法也能直接操作被子类隐藏的成员变量

答案:D

解析:子类是不能继承父类的构造方法的,而是必须调用其父类的构造方法;abstract类的子类可以是abstract类,如果是非abstract类,就必须重写父类中所有的abstract方法;

C中子类继承的方法可以操作除了子类继承和隐藏的成员变量之外自己声明的成员变量。
隐藏:所谓隐藏是指子类拥有两个相同名字的变量,一个是继承自父类,另一个是由自己定义的。当子类执行它自己定义的方法时,如果操作该变量,所操作的是它自己定义的变量,而把继承自父类的变量“隐藏"起来。当子类执行从父类继承的操作时,如果操作该变量,所操作的是继承自父类的成员变量。

 

3. Java中"System.out.println(4 | 9)"的输出值,和下列哪个相等()。

A) System.out.println(4 || 9)

B) System.out.println(3 | 9)

C) System.out.println(5 | 9)

D) System.out.println(true | true)

答案:C

解析:题中的“|"是二进制中的逻辑或运算,

4 : 0000 0100

9 : 0000 1001

9|4 : 0000 1101 -> 13

A:编译错误,B:11,C:13,D:true

 

4. 下列说法正确的有哪些()。

A) LinkedList继承自List

B) AbstractSet继承自Set

C) HashSet继承自AbstractSet

D) WeakMap继承自HashMap

答案:ABC

解析:D中没有WeakMap这种引用类型,只有WeakHashMap,继承自Map和AbstractMap

 

 

5. 下面属于面向字符的输入流是哪个()

A) BufferedWriter

B) FileInputStream

C) InputStreamReader

D) ObjectInputStream

答案:C

解析:流包括低级流(处理流、字符流)和高级流(节点流、字节流),字符输入流都继承自Reader,字符输出流都继承自Writer。BufferedWriter-缓冲字符输出流,FileInputStream-文件字节输入流,InputStreamReader - 字符输入流,ObjectInputStream-对象字节输入流。

 

6. 下面哪个选项的代码是错误的?()

A) new BufferedWriter(new FileWriter(“readme.txt"))

B) new BufferedReader(new FileInputStream(“readme.dat"))

C) new GZIPOutputStream(new FileOutputStream(“readme.zip"))

D) new ObjectInputStream(new FileInputStream(“readme.dat"))

答案:B

解析:字符流不能直接依赖于非缓冲字节流,必须要经过缓冲字节流。

BufferedWriter - 缓冲字符输出流

BufferedReader - 缓冲字符输入流

GZIPOutputStream - GZIP字节输出流(用于压缩文件)

GZIPInputStream - GZIP字节输入流(用于解压文件)

ObjectInputStream - 对象字节输入流(用于序列化和反序列化)

 

7. 下面横线中分别填写"t.start();" 和 “t.run();",两者分别运行的结果是:()。

public static void main(String[] args) {
    Thread t = new Thread() {
        public void run() {
            printKeji();
        }
    };
                  
    printDanei();
}

private static void printDanei() {
    System.out.println("JAVA");
}

private static void printKeji() {
    System.out.println("科技");
}

A. JAVA科技 和 JAVA科技

B. 科技JAVA 和 科技JAVA

C. JAVA科技 和 科技JAVA

D. 科技JAVA 和 JAVA科技

答案:C

解析:在线程中,当调用线程的start方法时,线程并不是立刻调用执行体(run方法),而是将线程的状态修改为Ready,等操作系统将时间片分给该线程时,才会调用线程的执行群体(run方法)。

补充:https://www.cnblogs.com/lijizhi/p/11422345.html

 

8. 下列哪个不是线程间通信方式()。

A) 锁机制

B) 信号机制

C) 共享内存机制

D) 信号量机制

答案:C

解析:进程间通信方式:管道、命名管道、信号量、消息队列、信号、共享内存、套接字、全双工管道;

线程间通信方式:锁机制、信号量机制、信号机制。

参考地址:https://www.cnblogs.com/fmqdblog/p/10680077.html

 

9. 下列哪些属于给Spring容器提供配置元数据的方法()。

A) XML 配置文件

B) 基于注解的配置

C) 基于java的配置

D) JSON配置文件

答案:D

解析:三种向Spring容器提供元数据的方式:XML配置,基于注解的配置,基于Java的配置

 

10. 通过点击页面上的按钮,打开一个新窗口并加载新页面,下列JS代码中满足要求的有哪些()

A) <input type='button' value="new" οnclick='open("new.html", "_blank")' />

B) <input type='button' value="new" οnclick='window.location.href="new.html"' />

C) <input type='button' value="new" οnclick='location.assign("new.html")' />

D) <form target='_blank' action='new.html'><input type='submit' value='new' /></form>

答案:D

解析:A:open方法需要配合window对象使用,即:window.open();

B:window.location.href是在当前窗口打开要访问的页面;

C:location.assign()是在当前窗口打开要访问的页面。

 

11. 在浏览器中查看网页时,下面哪个元素是看不见的?()

A) <input type="password" />

B) <input type="radio" />

C) <input type="hidden" />

D) <input type="rest" />

答案:C

解析:只有当input标签的type属性设置为hidden的时候标签才是隐藏的。没有rest这种类型的type,当类型不识别时类型默认设置为text。

 

12. 若要设置某个表格的背景色为蓝色,应该使用哪一句代码来描述此种设置?()

A) bgcolor="blue"

B) bgground="blue"

C) backcolor="blue"

D) background="blue"

答案:A

解析:无

 

13. Ajax请求的时候GET和POST方式的区别描述下:

答案:

1)请求参数位置:Get请求参数拼接在url路径后面,Post请求参数放在虚拟载体里面;

2)请求参数长度:Get请求参数的长度最多在2000个字符,而Post请求参数没有长度限制;

3)安全问题:Get请求由于参数拼接在url路径后面是不安全的,Post请求是安全的;

4)引用场景:Get请求主要用于请求静态资源或者简单的页面跳转,Post请求主要用于传递需要保密的参数的表单提交。

 

14. 解释Spring支持的五种bean的作用域:

答案:

1)singleton:单例模式,bean在每个Spring IOC容器中只有一个实例,Spring作用域的默认值为Singleton;

2)srototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例,Spring采用的是深克隆;

3)request:每次http请求都会创建一个bean,该作用域仅在web应用中使用Spring才有效;

4)session:在Http Session中,一个bean对应一个实例,该作用域仅在web应用中使用Spring才有效;

5)global session:在一个全局的HTTP Session中,一个bean对应一个实例,该作用域仅在web应用中使用Spring才有效

 

15. SQL题
   请使用标准的SQL语句,按要求写出响应SQL


1) 班级(class字段)值为“3班"的学生年龄(age字段)值加1:

答案:

UPDATE T1 SET AGE=AGE+1 WHERE CLASS=3班;

 

2) 按地区(city字段)统计学生的数量:
答案:

SELECT COUNT(1) FROM T1 GROUP BY CITY;

 

3) 按省份(province字段)统计学生的数量:
答案:
SELECT T2.PROVINCE, COUNT(1)

FROM T1

LEFT JOIN T2 ON T1.CITY=T2.CITY

GROUP BY T2.PROVINCE;

 

16.编程题

写一个文件读取的工具类,具体要求如下:

1)限制读取文件的类型,尽支持txt、xml、html;

2)编码格式支持:可读取UTF-8、GBK、ISO-8859-1编码格式的文件;

3)异常处理:抛出异常并带上说明,让调用方按需处理;

4)空白行删除:根据输入参数控制是否执行文件内容的空白行过滤。

(注:方法需要有完整的入参和出参,上述要求写出实现思路即可,代码更优!)

/**
 * 写一个文件读取的工具类,具体要求如下:
 * 1)限制读取文件的类型,尽支持txt、xml、html;
 * 2)编码格式支持:可读取UTF-8、GBK、ISO-8859-1编码格式的文件;
 * 3)异常处理:抛出异常并带上说明,让调用方按需处理;
 * 4)空白行删除:根据输入参数控制是否执行文件内容的空白行过滤。
 */
class FileUtils {
    // 支持文件类型
    private static final List<String> SUPPORT_FILE_TYPE = Arrays.asList("txt", "xml", "html");
    // 支持编码类型
    private static final List<String> SUPPORT_ENCODING_TYPE = Arrays.asList("UTF-8", "GBK", "ISO-8859-1");

    /**
     * 文件错误信息
     */
    // 编码不支持
    public static final String ERROR_ENCODING_OUT_OF_LIMITS = "Error: Encoding Is Not Supported!";
    // 文件不存在
    public static final String ERROR_FILE_NOT_FOUND = "Error: File Not Found!";
    // 文件类型不支持
    public static final String ERROR_FILE_TYPE_NOT_SUPPORT = "Error: File Type Is Not Supported!";
    // IO读取异常
    public static final String ERROR_FILE_IO_EXCEPTION = "Error: File IO Has An Exception!";

    /**
     * 读取文件
     * @param filePath 文件路径
     * @param encodingType 编码类型
     * @param isTrim 是否执行文件内容的空白行过滤
     */
    public static String read(String filePath, String encodingType, boolean isTrim) {
        encodingType = encodingType.toUpperCase();
        if (!SUPPORT_ENCODING_TYPE.contains(encodingType)) {
            throw new RuntimeException(ERROR_ENCODING_OUT_OF_LIMITS);
        }
        File file = new File(filePath);

        if (!file.exists()) {
            throw new RuntimeException(ERROR_FILE_NOT_FOUND);
        }

        if (file.getName().indexOf(".") < 0) {
            throw new RuntimeException(ERROR_FILE_TYPE_NOT_SUPPORT);
        }

        String fileType = file.getName().split("\\.")[1];

        if (!SUPPORT_FILE_TYPE.contains(fileType)) {
            throw new RuntimeException(ERROR_FILE_TYPE_NOT_SUPPORT);
        }

        StringBuffer message = new StringBuffer();
        String line = null;
        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), encodingType))) {
            while ((line = br.readLine()) != null) {
                if (isTrim) {
                    line = line.trim();
                }
                message.append(line + "\n");
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(ERROR_FILE_NOT_FOUND);
        } catch (IOException e) {
            throw new RuntimeException(ERROR_FILE_IO_EXCEPTION);
        }

        return message.toString();
    }

    public static void main(String[] args) {
        String read = read("C:\\Users\\Administrator\\Desktop\\test.txt", "gbk", false);
        System.out.println(read);
    }
}

 

  • 11
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿放下技术的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值