2020 Java 实习生笔试题

 

最近在投简历,收到了一家公司的笔试,具体是哪家公司就不方便透露了,笔试之前也没有特别的做准备,毕竟功夫用在平时。考试时间就 30分钟,线上考试。考的大多数知识点幸好之前都接触过,Java SE、Java EE,数据库,前端框架等等。

一、选择题

1、给定一个二叉树,求其中序遍历 (数据结构)

记录一次  2020 春招  Java实习生笔试题_mysql
我们分析一下,这是个不完整的二叉树,学过数据结构的同学都知道,二叉树的遍历分为 (有错误的话希望大佬指正)

  1. 先序遍历 ABCEDGF (根左右)
  2. 中序遍历 CEDBAGF (左根右)
  3. 后续遍历 EDCBGFA (左右根)
  4. 层次遍历 ABFCGDE

2、概念理论 (貌似 是JDBC)

如果你需要使用带输出参数的存储过程,你需要使用一下那种类型的 statement 类调用存储过程

A、CallableStatement
B、PreparedStatement
C、Statement

解析:这里不是很明白 emmmmm

3、Spring 框架问题

关于 Spring 说法错误的是?

A、使用 Spring 可以实现声明事物
B、Spring 包含一个 “依赖注入” 模式的实现
C、Spring提供了 AOP 方式的日志记录系统
D、Spring 是一个轻量级 Java EE 的框架集合

解析:
A、Spring 可以使用 tx 标签 或者 @Transactional 实现声明事务 (这里用过竟然不知道 emmm)
B、依赖注入的核心是 工厂模式, AOP 的核心是动态代理,所以正确
C、我觉得这里错误的可能幸福最大, Spring 只提供了 AOP 的方式,具体实现还得靠我们自己寻找合适的切入点,然后再做对应的通知。并没有提供一个现成的系统给我们,因此错误
D、Spring 的核心是 IoC 和 Aop,但是还包括 ORM,Bean 等多项管理,所以正确

4、同步与异步的问题 (HTTP)

()是调用者发出消息后,必须等待消息处理结束返回后,才能进行后续操作

A、返回消息
B、简单消息
C、异步消息
D、同步消息

解析:

我们一般使用 ajax 技术实现页面局部刷新操作,这就是异步,不用等待全部加载完毕才显示,同步就是等待一个页面全部接在完毕才会显示

5. JavaScript 基础 (DOM 操作)

下面不属于访问指定节点的方法的是?

A、getElementById
B、getElementByTagName
C、obj.value
D、getElementByName

解析:

这里只 C不一样,并且 C 是获取 JavaScript 对象的值,和另外三个获取 dom 节点不属于同一类

6、HTML 基础 (form 表单)

在页面中看不到表单元素的是那种?()

A、<input type="radio"></nput> 单选按钮
B、<input type="hidden"></input> 隐藏域
C、<input type="password"></input> 密码输入框
D、 <input type="reset"></input> 重置按钮

解析:

英语好的同学,看到 B 应该就会直接选了,这些常见按钮我们还是要知道的

7、数据库基础 (sql 基本编写)

设有学生表 Student (学号、姓名、性别、年龄),则向 Student 表中插入一条新记录的正确 SQL 语句是?

A、APPEND? INTO? STUDENT? VALUES? ('001',,'王五','男',18)
B、INSERT? STUDENT? VALUES? ('001',,'王五','男',18)
C、INSERT? TABLE? STUDENT? VALUES? ('001',,'王五','男',18)
D、INSERT? INTO? STUDENT? VALUES? ('001',,'王五','男',18)

解析:

幸好最近一直在写 Java EE 的项目,写 sql 语句是必不可少的。为了怕出错,我特意回顾了一下 DML 数据库操作语言 —— mysql 常用命令整理,这一题的错误也非常明显,有 sql 基础的人就不会出错了。

8、事物管理 (JDBC)

哪个类包含了事物控制, setAutoCommit、commit 和 rollback 回滚方法?
A、ResultSet
B、Connection
C、Statement

解析:

这里给出了三个方法,前面两个可能会比较眼熟,但是后面事物回滚可能很多人都没用过,这个功能其实非常的强大。当你的项目报错的时候,可以通过事物回滚保证数据库的数据还是正常的。

  • A 选项,ResultSet 得到的是一个结果集,我们可以使用这个类来遍历数据库中查询的数据
  • B 选项,我们使用 JDBC 时,会用到 Connection con = DriverManager.getConnection(URL,USERNAME,PASSWORD) 这一步得到连接,然后就可以通过这个对象得到如上三个方法
    记录一次  2020 春招  Java实习生笔试题_mysql_02
  • C 选项,它的作用是用来执行 SQL 语句的

九、线性表,链表的特点 (数据结构)

线性表若采用链式存储结构的时候,要求内存可用存储单元的地址 ()
A、 一定是不连续的
B、必须是连续的
C、部分地址必须是连续的
D、连续或者不连续都可以

解析:

这题我为什么选 D呢,主要是 A、B、C 都带有一定的绝对性,再来看一看 线性表 和 链表的定义,

  • 线性表的特点在查询数据快,因为它是连续的,只要找得到它对应数据的下标,就能通过下标找到它,但是删除或者增加元素就很慢,因为要涉及到移动元素
  • 链表的特点:链表添加、删除元素很方便,我们只需要知道元素的地址,就可以知道元素在哪,但是查找元素就很麻烦,因为我们总是要从第一个元素开始往后面找

十、form 表单中 get 和 post 请求的数据量 (HTML HTTP)

HTML 的首要标记是 <from> ,<form> 标记的参数 method 表示表单发送的方法,可能为 get 或者 post,下列关于 get 和 post 描述正确的是

A、get 方法传递的参数对客户端是不可见的
B、post 方法传递的参数对客户端是不可见的
C、post 方法对发送数据的数量限制再 255 个字符以内
D、get 请求信息以查询字符串的形式发送,查询字符串没有长度限制

解析:

这题我当时选的 C,我以为人人都是程序员,会使用 f12 查看 post 得数据,害。现在分析下每题错误得原因

A、 get 请求在客户端,比如我正在编辑得这篇博客就是, ‘?’ 后面得就是查询字符串,以键值对得形式存在,长度想想也知道,怎么可能不限制长度,所以 D也错误
记录一次  2020 春招  Java实习生笔试题_Spring全家桶_03
C、我之前一直以为携带大量请求使用 get ,因为快,post 请求携带的参数是为了安全性,之后又在网上查了一些两种请求的区别

长记性了 ing
记录一次  2020 春招  Java实习生笔试题_spring_04

11、Object 类继承,派生问题 (Java SE 基础)

下面关于 Object 类的说法,正确的是
A、 一个类如果定义为 abstract 的,依然继承自 Object 类
B、Error 类不是从 Object 类派生出来的
C、如果一个类显示继承了其他类,则该类不在继承 Object 类
D、如果一个类是从 Object 类派生出来的,那么必须重写 toString() 和 equals() 方法

解析:

这一题我选择的是 A,我的理解是 Object 类作为所有类的父类,是最高级的类,所有类的创建都默认继承了 Object 类,所以可以看到我们自己创建的类都就可以看到拥有 toString() 等等一些来自 Object 类的方法

B、前面说到了,Object 类是最高的类
C、和 A 冲突
D、不一定要重写,可以根据自身需求定制,比如我们自己写实体类的时候,

12、数据库、并发?

数据库并发操作可能带来的问题包括 ()
A、增加数据冗余度
B、数据独立性会提高
C、非法用户的使用
D、丢失更新

这一题我也时大概猜了一下,结合我所理解的并发内容,就选择了 D

我也在网上查了一下数据库的 并发 和 并行的区别 数据库 并发 和 并行

总结:
数据库并发操作会出现

  1. 丢失更新
  2. 脏读
  3. 不可重复读
  4. 幻象读

13、JS 基础(JSON 数据格式)

以下关于 JSON 描述不正确 ()
A、数组是值(value) 的有序集合,一个数组以 ‘[’ 开始,’]’ 结束,值之间使用 ‘;’ 分割。
B、JSON是一种轻量级的数据交换格式
C、 对象是一个无序的 " " 名称/值 “对"集合,一个对象以 “{” 开始,以 “}” 结束,每个"名称” 后面跟着一个 “:” ," " 名称/值 对 之间使用 “,” 分割
D、值(value)可以是双引号括起来的字符串(String)、数值(number)、true、false、null、对象 (object)、或者数组(array),这些结构可以嵌套

解析:

A 很明显的错误,数组之前一般都适用 “,” 间隔,这是编程基础的内容

14、排序 (算法)

是时候好好梳理一下排序算法了~

下面稳定的排序算法是?
A、树形选择排序和 shell 排序
B、折半插入排序和起泡排序
C、简单选择排序和四路归并排序
D、直接插入排序和快速排序

解析:

不稳定:快速排序、希尔排序、堆排序 / 选择排序。
稳定:冒泡排序、插入排序、归并排序、基数排序。

应用场景
适合顺序结构的是:折半插入排序、希尔排序、快速排序、堆排序

适合链式结构的是:直接插入排序、归并排序

参考博客

15、关系型数据库四大原则

关系型数据库需要遵循 ACID 原则,关于此描述的正确的有
A、存储系统保证如果没有对某个对象的新的更新的操作,后续访问中可能出现不一致的值,但最终所有的访问都将返回这个对象最后更新的值。
B、一个事物被提交之后,它对数据库的改变是永久的,即使数据库发生故障也不应该对其有任何影响。(数据库事物的持久性)
C、在 Read Commiteed 的隔离级别下,多个用户并发访问数据库时,一个用户的事物不被其他事物所干扰,不会出现幻读(脏读)现象。

解析:

这题应该选 B,B 讲的是数据库的原子性, A 应该会报错,C 是会出现脏读

参考链接

16、Java SE (集合)

HashMap 和 HashTable 的共同点是?
A、都可以自动按键值进行排序
B、没有共同点
C、都是可以存放对象
D、存储性能都是一样的

解析:

key 和 value 都是对象,并且不能包含重复 key,但可以包含重复的value。因此 C正确,HashMap 是非线程安全的, HashTable 是线程安全的,所以 D是错误的。因为两者都是使用 Hash值来保证每对 键值对不重复,所以 A错误。

17、前端框架 (React)

React 工作原理是什么
A、更优方式手动更新 DOM
B、事件通知后更新 DOM
C、虚拟 DOM 结合 DIFF 算法更新 DOM
D、数据双向绑定更新 DOM

解析:

React 没有学过,只学过 Vue,D 答案就是针对 Vue 的。 React 是和虚拟 DOM 相关的,所以答案选 C

18、Java EE基础 (Servlet)

有关 Servlet 生命周期说法正确的有
A、service() 方法响应客户端的请求
B、Servlet 生命周期由 Servlet 实例控制
C、init() 方法在创建完 Servlet 实例后对其进行初始化。传递的参数为传递的 ServletContext 对象
D、destory() 方法释放 Servlet 实例

解析:
A、 Servlet 是用来接收来自客户端的请求的
B、 Servlet 只有第一次访问的时候就会加载
C、Servlet 第一次加载时创建,同时会调用 init() 方法
D、destory(0 方法会销毁 Servlet 实例

19、img 标签属性 (前端基础)

我们在 HTML 页面中制作了一个图像,想要在鼠标指向这个图像时浮出一条提示信息,应该使用哪个参数可以做到
A、MSG
B、SRC
C、ALT
D、POP

解析:

准确来说,这题的标准答案应该是 title 属性,alt 属性会在图片加载不出来的时候才显示

记录一次  2020 春招  Java实习生笔试题_Java_05

20、Java EE(SpringMVC)

关于 SpringMVC 的核心控制器, DispatcherServlet 的作用,以下说法错误的是。
A、它负责接收 HTTP 请求
B、加载配置文件
C、实现业务操作
D、初始化上下应用对象 ApplicationContext

解析:
下面是一段 web.xml 的配置
记录一次  2020 春招  Java实习生笔试题_Java_06

这题我错选 D了, SpringMVC 是属于 Spring 的一个 MVC 框架实现,所以包含了 D,这只是一个 Servlet,它负责处理所有的请求,同时也复杂了配置文件的加载工作

21、HTTP (Tomcat)

访问 Tomcat 部署应用,出现 404 错误,原因是
A、Tomcat 服务器没有启动
B、Tomcat 服务器启动,但输入 URL 的页面名称错误
C、Tomcat 服务器启动,但输入 URL 的主机地址错误
D、Tomcat 服务器启动,但输入 URL 的协议错误

解析:

项目已经部署了,说明启动了,能够出现 404 的情况一般都是页面路径错误,所以 B 正确,主机地址错误,和协议(一般都是 http,还有可能看到 ftp 等)错误

22、算法 (排序算法)

有一组数据 {84,47,25,15,21} 排序,数组的排列次序在排序的过程中的变化为
(1)84 47 25 15 21
(2)15 47 25 84 21
(3)15 21 25 84 47
(4)15 21 25 47 84

A、冒泡
B、插入
C、快速
D、选择

解析:

这题每次都是选择最小的值出来,然后插入到前面

23、SpringBoot 配置

SpringBoot 的自动配置功能是基于哪个注解开启的?
A、"@ComponentScan" 开启注解扫描
B、"@Configuraton" 标识注解类
C、"@SpringBootConfiguration"
D、"@EnableAutoConfiguration" 开启自动配置

24、HTML 基础 (css 三种引入方式)

以下的 HTML 中,哪个是正确引入外部样式表的方法()?
A、<link ref="stylesheet" type="text/css" href="mystyle.css">
B、<stylesheet>mystyle.css</stylesheet>
C、<style src="mystyle.css">