笔试题-2021-11-23
reference-site-list
选择题
1.下面关于java.lang.Exception类的说法正确的是()
A. 继承自Throwable
B. Serialable
C. 继承Error
D. 实现Throwable
- 答案:A
- 解析:Exception源码
1
2
3
4 public class Exception extends Throwable {
static final long serialVersionUID = -3387516993124229948L;
// ...
}
2.下面程序的运行结果是()
1 | String str1 = "hello"; |
A. true B. false
- 答案:B
- 解析:考察 == 的作用,判断的是字符串引用的地址是否相同,str1在常量池中,str2是用new String(“llo”)再去分配了新的堆空间,所以str2存在堆空间上
- 参考网址:牛客网 - String str1=”hello”;
3.下列说法正确的是()
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D. 一个class只能定义一个constructor
- 答案:C
- 解析:
- A. 类中无构造方法,默认有一个空的构造方法
- B. 普通方法可以和类同名,但是要有void返回值
- D. 一个类可以有多个构造方法
4.选项中哪一行代码可以替换题目中// add code here 而不产生编译错误()
1 | public abstract class MyClass{ |
A. public abstract void method(int a);
B. constInt = constInt + 5;
C. public int method();
D. public abstract void anotherMethod() {}
- 答案:A
- 解析:
- B. 这个是运算,运算只能在方法体中进行
- C. 这个和返回值void的方法重名了,返回值不同,不算重载
- D. 抽象方法不能有方法体
5.运行以下代码的结果是什么()
1 | public static void main(String[] args) { |
A. true, false
B. false, false
C. true, true
D. false, true
- 答案: A
- 解析:
- JVM会自动维护八种基本类型的常量池,int常量池中初始化-128
127的范围,所以当为Integer i=100时的属于128127的范围内时,在自动装箱的过程中取的是常量池中的数值,所以f1和f2都是常量池中的地址,所以f1 == f2返回true,- 而150超过了常量池的范围,f3,f4都是在堆上重新分配的空间,地址当然不一样,所以f3 == f4 返回false。
编程题
1.请写出线程安全的懒汉单例模式
1 | public class Singleton { |
解析: 注意线程安全的要求,要使用双检锁单例
2.用一条SQL语句查询出每门课(没考的不统计)都大于80分的学生姓名
name course score (表名为t_score)
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
李四 英语 0
王五 语文 81
王五 数学 100
王五 英语 90
1 | SELECT t.name FROM sql_test.t_score t group by t.name having min(t.score) > 80; |
解析: 考察的是分组统计,group by - having,经典考题了
简答题
1.项目中动静分离有什么好处?
1 | api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。 |
参考网址:动静分离
2.事务的隔离级别有哪些?Spring事务中的默认隔离级别是什么?
1 | ANSI SQL标准定义了4种事务隔离级别来避免3种数据不一致的问题。事务等级从高到低,分别为: |
参考网址:
3.什么事SpringBoot, SpringBoot有什么好处?
1 | 在使用传统的Spring去做Java EE(Java Enterprise Edition)开发中,大量的 XML 文件存在于项目之中,导致JavaEE项目变得慢慢笨重起来,,繁琐的配置和整合第三方框架的配置,导致了开发和部署效率的降低。 |
参考网址:
4.Spring AOP的理解
1 | AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。 |
参考网址:
5.假设有一个池塘,里面有无穷多的水,现有2个空水壶,容积分别为5升和6升,问题是如何只用这2个水壶从池塘里取得3升的水。
1 | 5L 装满,倒进6L 0,5L |
参考网址:
- 本文标题:笔试题-2021-11-23
- 本文作者:Xplorist
- 创建时间:2021-11-23 22:00:00
- 本文链接:https://xplorist.tech/2021/11/23/57f36c40775f/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!