最近接触了一个在线测试系统,感觉这个评估系统还不错,对Java基础方面考察的较为全面,特地在做的过程中用截图软件记录下来,让大家也可以自测下,评估自己对Java基础的掌握程度。文末附上了个人测试的样例报告,从报告中可以看出测试题目所属考察内容及熟练度掌握程度概览。

测试内容均是英文展示,可能需要有些英文基础。

下面开始正文啦!(PS:由于时间仓促,同一题部分内容可能存在重复截取的现象,少部分题缺失,总题数约54题,180分钟内完成,不定向选择,每题最多三个答案。另由于本人水平有限,在进行解答时难免会有疏漏,恳请批评指正。)

Q1:

  • 考察内容:集合(List,Collections)、Comparator。
  • 解析:从已知的集合和给出的输出结果可以看出是根据firstName升序,lastName升序,并排除Mary,再根据排除法迅速找出答案。④虽然进行了firstName升序并排除了Mary,但并未指定lastName排序方式,按names原有顺序输出,不符合条件
  • 参考答案:⑤

Q2:

  • 考察内容:Jar包使用
  • 解析:Jar可通过classpath、类加载器和manifest等方式加载,但是不能将其解压后使用。
  • 参考答案:②③

Q3:

  • 考察内容:Integer、逻辑运算符
  • 解析:逻辑或、与操作具有逻辑短路特性
  • 参考答案:⑤

Q4:

  • 考察内容:Math类的使用
  • 解析:Math无常量G
  • 参考答案:②④⑤

Q5:

  • 考察内容:多线程
  • 解析:final class使类不可变,线程安全,如String;static变量为类实例共享,无法保证线程安全
  • 参考答案:②③⑤

Q6:

  • 考察内容:国际化
  • 解析:ResourceBundle在读取资源配置文件时,文件名要遵从特定的命名规则
  • 参考答案:③④

Q7:

  • 考察内容:类的多态、静态方法
  • 解析:由于方法为静态的(与具体实例无关),在使用类实例调用时不会存在多态的现象;类之间无法进行强转
  • 参考答案:⑤

Q8:

  • 考察内容:TreeSet
  • 解析:TreeSet根据指定的排序规则判断key是否有重复,有则忽略,无则添加。这点注意和HashSet区分,HashSet是根据key的hashcode判重
  • 参考答案:③

Q9:

  • 考察内容:JDK1.8引入的新的日期类LocalDate
  • 解析:阅读源码可以发现,y数量的不同有不同的展示结果,如题日期,y为1、3、4位时,按实际位数展示,2位展示年份后两位,大于4位时前面填充0;M为1位时按实际位数展示(即1-9月前面不填充0),2位不足部分填充0,3位为英文简写,4位为英文全称,5为首字母,大于5位运行时错误;d为1位时按实际位数展示,2位时不足部分填充0,大于2位运行时错误;E代表周几,1-3位英文简写,4位英文全称,5位首字母,大于5位运行时错误
  • 参考答案:③

Q10:

  • 考察内容:异常
  • 解析:异常分为运行时异常和检查时异常(非运行时异常)
  • 参考答案:③

Q11:

  • 考察内容:类构造器、变量访问
  • 解析:内部类可直接操作外部类变量
  • 参考答案:②

Q12:

  • 考察范围:IO流
  • 解析:构造器的使用,②④⑤无相关的构造器
  • 参考答案:①③

Q13:

  • 考察内容:注解、类命名、package
  • 解析:package必须声明在源文件的最前面;注解和类同名时不能在同一个package下
  • 参考答案:①③

Q14:

  • 考察内容:JDK1.8新增的Stream
  • 解析:Stream.reduce三种重载方法的使用,编号①Character无此构造器,编译错误;编号③是筛选集合中长度最大的字符串
  • 参考答案:②④⑤

Q15:

  • 考察内容:Integer
  • 解析:前两行代码可知,number1和number2指向同一对象,第三行时,number1进行了自增,由于Integer是final的,在修改时,原有的实例指向了新的对象。
  • 参考答案:④

Q16:

  • 考察内容:内部类
  • 解析:内部类可以访问外部类所有变量和方法,外部类访问内部类时需要初始化内部类实例
  • 参考答案:③⑤

Q17:

  • 考察内容:this()和super()的使用
  • 解析:this()&super()仅可在构造器中使用,且必须放在构造器中第一行,子类默认调用父类构造器
  • 参考答案:③⑤

Q18:

  • 考察内容:JVM内存管理
  • 解析:编号①,执行finalize函数线程优先级较低,执行时间不确定,异常不会导致垃圾收集暂停;编号②,同样System.gc()优先级也较低,执行时间不确定;编号③,垃圾收集对系统性能影响较大,如吞吐量;编号④,垃圾收集并不能确保不会发生内存泄漏,如参数设置不当时,即使执行垃圾收集,依然有内存泄漏风险;编号⑤,进行垃圾收集前准备工作时,会先调用finalize(),在下一次垃圾回收时,会真正的回收对象内存
  • 参考答案:⑤

Q19:

  • 考察内容:异常
  • 解析:②无CheckedException,④不属于异常
  • 参考答案:①③

Q20:

  • 考察内容:类的创建
  • 解析:一个类文件中可以声明多个类,但最多有一个类声明为public,且该类名与文件名一致。此外,亦不可以使用private/protected声明其他类
  • 参考答案:③

Q21:

  • 考察内容:Stream、Collectors使用
  • 解析:从输出结果中可以看出,是将姓名集合中名字字母数作为键,名字(转为小写)作为值的Map格式输出,并通过某些条件过滤掉部分数据。这里需要了解Collector类,查阅源码可知,其范型由三种类型(按顺序分别为T-输入元素类型,A-规约操作可变的累积类型,R-规约操作结果类型)构成。②④分别是TreeSet和String,不支持forEach遍历,编译时错误
  • 参考答案:①③⑤

Q22:

  • 考察内容:IO流
  • 解析:ByteArrayOutputStream的write有两种重载方法,一个参数时其size增1,三个参数时size增加第三个参数指定长度
  • 参考答案:①

Q23:

  • 考察内容:国际化Locale
  • 解析:Locale对象初始化方法,查看源码可知答案
  • 参考答案:③④⑤

Q24:

  • 考察内容:接口
  • 解析:无
  • 参考答案:①③

Q25:

  • 考察内容:接口
  • 解析:接口中的变量默认final,初始化后无法再次修改
  • 参考答案:①

Q26:

  • 考察内容:类初始化相关
  • 解析:对于有父类的情况,class初始化顺序:static对象/代码块(先父后子)->成员变量/代码块-构造器(先父类成员变量/代码块,再父类构造器,子类同父类)
  • 参考答案:⑤

Q27:(可能由于较为简单,忘了截了)

Q28:

  • 考察内容:类成员变量初始化
  • 解析:类成员变量在未指定值时,有默认值,布尔false,整型变量0,String为null,浮点型0.0
  • 参考答案:③

  • 考察内容:方法重载
  • 解析:无
  • 参考答案:③

Q29:

  • 考察内容:函数式编程
  • 解析:Lambda表达式是函数式编程常见的方式之一,接口是封装特性的表现形式之一,隐藏具体实现细节
  • 参考答案:①②

Q30:

  • 考察内容:多线程
  • 解析:无
  • 参考答案:②④⑤

Q31:

  • 考察内容:Formatter使用
  • 解析:查阅源码,Formatter内部维护一个Appendable对象,每进行一次format操作,将新的参数按对应规则加入到指定位置。请参考官方说明文档
  • 参考答案:②

Q32:

  • 考察内容:JVM
  • 解析:原话意思是垃圾收集会导致性能下降,有人怀疑是和应用显示调用System.gc()有关。那么很简单,我们禁用显示调用gc()功能就可以验证是否是显示调用导致的性能问题。虚拟机参数由选项名称中即可看出正确结果
  • 参考答案:⑤

Q33:(漏截)

Q34:

  • 考察内容:java基础
  • 解析:无
  • 参考答案:③

Q35:

  • 考察内容:ClassLoader
  • 解析:实例属于同一类型的判定标准为同一类加载器加载,且完全限定名一致。限定名一致但属于不同类加载器,则属于不同对象
  • 参考答案:②

Q36:

  • 考察内容:Java面向对象基础
  • 解析:基本数字类型或其包装类型在进行自增时,其指向的栈地址发生变化,可通过Objects.hashCode(Object o)观察
  • 参考答案:③

Q37:

  • 考察内容:国际化(Locale)
  • 解析:参考源码
  • 参考答案:⑤

Q38:

  • 考察内容:自增运算符,HashMap
  • 解析:HashMap的顺序是根据其key的hash值来处理的。自增在语句(自增)结束后,其值才真正改变。如int i=0;int j = i++ + ++i;变量j最后的值为2,进行++i前,读取的i为1,进行++i时,先自增,i为2。
  • 参考答案:③

Q39:

  • 考察内容:Supplier,Consumer接口
  • 解析:主要考察Consumer中andThen(Consumer<? super T> after)用法,先执行第一个Consumer,然后再执行andThen中指定Consumer
  • 参考答案:④

Q40:

  • 考察内容:内存泄漏
  • 解析:参考解释。静态集合类与程序生命周期一致,其引用的Object可能无法被回收;资源(网络、数据库等)未及时关闭,连接无法释放;
  • 参考答案:①②⑤

Q41:

  • 考察内容:Set
  • 解析:LinkedHashSet保持原有输入顺序基础上,新增仍然保持Set不重复特性,即添加相同Object时,替换原有Object,底层实现参考HashMap的put(K key, V value)函数
  • 参考答案:①

Q42:

  • 考察内容:Java基础
  • 解析:②字符串null无法转换为int类型,应为NumberFormatException;④不论外层加多少引号,最终处理后只带一对引号
  • 参考答案:①③

Q43:

  • 考察内容:并发集合
  • 解析:无
  • 参考答案:②④

Q44:

  • 考察内容:多线程
  • 解析:StringBuilder是线程不安全的;引起线程安全的主要原因是多个线程操作共享资源,如静态变量、全局变量,此外局部变量逃逸也会造成线程安全问题
  • 参考答案:②③⑤

Q45:

  • 考察内容:接口
  • 解析:抽象方法无法在运行时返回相关信息,需要有具体实现
  • 参考答案:④

Q46:

  • 考察内容:成员变量初始化
  • 解析:静态变量或代码块优先按顺序进行初始化,number2通过getValue()进行初始化,此函数又将number1返回,此时number1未进行初始化,返回默认值0
  • 参考答案:①

Q47:

  • 考察内容:抽象类
  • 解析:接口声明的方法会被隐式指定为public abstract,子类覆写时,重写的方法访问范围要大于等于父类中的方法,如题中MyInterface的method1()为public,Parent中method1()必须声明为public的
  • 参考答案:①③

Q48:

  • 考察内容:类初始化顺序、IO流
  • 解析:这里值得注意的是,Java中在构造一个对象时,首先会先构建父类对象,再构建子类对象。序列化时,如果父类未实现序列化接口,子类实现序列化接口,则仅有子类会被序列化,若父类也实现了序列化,则父类子类都会被序列化。反序列化子类对象时,如果父类未实现序列化,则会重新调用父类默认构造器创建父类对象,若父类实现序列化,则不需要再调用父类默认构造器。这里可以将父类也实现序列化接口进行验证
  • 参考答案: ③

Q49:

  • 考察内容:类初始化
  • 解析:无
  • 参考答案:①

Q50:

  • 考查内容:Java基础
  • 解析:jar包使用问题,②此种方式是临时的,关闭当前命令窗口后配置失效
  • 参考答案:①②

Q51:

  • 考察内容:Stream API
  • 解析:无
  • 参考答案:③

Q52:

  • 考察内容:Java基础
  • 解析:无
  • 参考答案:①⑤

Q53:

  • 考察内容:方法引用
  • 解析:①Collection不支持函数式编程,无法使用方法引用,编译错误;②Supplier未指定泛型类型,方法第一行类型转换编译错误
  • 参考答案:④

Q54:

  • 考察内容:类加载器
  • 解析:参考文档,①首先调用loadClass(),内部调用findLoadedClass(),若未加载,调用父加载器loadClass(),父类加载器无法加载该类的话,就调用 findClass() 方法来查找该类;⑤classLoaderDemo写法有问题,第一点类实例未定义,第二点类实例无法直接使用.class形式,第三点此类为自定义类,此类加载器的父加载器为扩展加载器,无法加载此类
  • 参考答案:③④

以上基本就是测试的所有内容,总的来说题目考察Java SE 8新特性偏多。做完之后会有类似如下的报告,从中可以看出个人各个知识点掌握熟练度。

IKM-Java SE 8评估测试题挑战,测测你的基础水平相关推荐

  1. 传智播客java就业班入学测试题(自测+答案)

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 传智播客java就业班入学测试题 ...

  2. Java SE 小白学习笔记 周周测 从小白到大牛

    周测01 一:填空题,每空1分,共20分 1:java的基本数据类型有(int)(byte)(short)(long)(double)(float)(Boolean)(char)2:请写出你接触过的关 ...

  3. 第一阶段Java SE学习概述

    Java SE学习概述 Java SE 学习分为五个阶段 第一部分:基础程序设计: 第二部分:面现象对象编程: 第三部分:Java SE 高级应用: 第四部分:JavaSE 新特性: 第五部分:MyS ...

  4. Java Se相关测试题(偏线程、集合)含答案及详解

    Java Se相关测试题(偏线程.集合)(简答.编程)含答案及详解 一.选择.简答题 二.编程题 (编程答案有很多思路,实现方式不同,如果有不同见解可打在评论区或私信) 一.选择.简答题 1.publ ...

  5. Java SE和Java EE应用的性能调优

    凡事预则立,不预则废,和许多事情一样,Java性能调优的成功,离不开行动计划.方法或策略以及特定的领域背景知识.为了在Java性能调优工作中有所成就,你得超越"花似雾中看"的状态, ...

  6. Java SE 6 新特性: HTTP 增强--转

    概述 Java 语言从诞生的那天起,就非常注重网络编程方面的应用.随着互联网应用的飞速发展,Java 的基础类库也不断地对网络相关的 API 进行加强和扩展.在 Java SE 6 当中,围绕着 HT ...

  7. java se/ee_嗨,您好 。 。 ! 您如何评价Java / Java EE技能?

    java se/ee 要知道,就是要知道你一无所知. 那就是真正知识的含义. 苏格拉底 这篇文章旨在为读者提供Java生态系统及其技术堆栈的快速概述. 老实说,从Java EE 7,Java SE 8 ...

  8. ntlm java_深讨Java SE 6 在 HTTP 方面的新特性(NTLM)

    概述 Java 语言从诞生的那天起,就非常注重网络编程方面的应用.随着互联网应用的飞速发展,Java 的基础类库也不断地对网络相关的 API 进行加强和扩展.在 Java SE 6 当中,围绕着 HT ...

  9. Java SE 9:Stream API的改进

    发表简要目录: (Post Brief Table of Content:) Introduction介绍 Java SE 8: Stream API BasicsJava SE 8:Stream A ...

  10. java se面试题_Java SE 8面试问答(第2部分)

    java se面试题 In my previous post, I have discussed some important Java SE 8 Interview Questions and An ...

最新文章

  1. JspServlet之Cookie
  2. Codeforces 833B 题解(DP+线段树)
  3. 1.10-SpringMVC直接访问WEB-INF下jsp中的页面
  4. 甲骨文中国裁员已定,补偿为N+6;VMware联手云平台合作伙伴AsiaPac,闪耀狮城;对标英伟达,寒武纪新货曝光……...
  5. php-fpm的重启
  6. JavaScript学习(二十二)—动态创建表格
  7. 求计算机技术在创新上的应用,计算机技术在企业中的应用
  8. graphpad 安装 hello world
  9. 【问天Block】STC15单片机PWM输出讲解
  10. 在MS Word 中添加 Mathtype 插件(vbe6ext.olb不能被加载问题 已解决)
  11. rhcsa第二天作业9道题
  12. 公司邮箱登录入口哪个方便,邮箱移动办公哪个最好用?
  13. 每天努力再多一点,每天坚持再久一点
  14. 政务网中使用内部华为云
  15. mac m1使用picGo + gitee搭建免费图床
  16. 解耦的概念、spring实现解耦的概述
  17. GPS接收机学习小记(一)
  18. 解读游戏“仙股”飞鱼科技年内涨幅超400%的逻辑
  19. 阿里云-移动推送集成及要点
  20. 现在做亚马逊,请一定多备几个店铺

热门文章

  1. mysql 游标动态传参数_Mysql 游标施用动态变量
  2. 图像转换 - base64
  3. python生日快乐代码简单_Python编程代码:当你的亲人朋友生日时,给他运行这个程序,生日快乐弹窗!...
  4. 限时,字节Java程序性能优化宝典大全,这才叫真正的性能优化
  5. MSP430如何给板子下载程序?(IAR MSPFET CCS)
  6. Linux虚拟机中vim编辑器常用命令介绍(二)
  7. 激光打标机不能刻字的处理
  8. Chrome中播放时视频编码为.h264和音频编码为acc,采样率为48000,双通道的视频文件时音画不同步
  9. 【BLE蓝牙学习开发笔记】安利一款简单好用且高性价比的BLE蓝牙抓包器
  10. matlab设计滤波器