牛客笔试题

  • 数据结构
  • 算法(1)
  • Linux
  • 基础(2)
  • 数据类型(3)
  • 面向对象
  • 集合
  • 异常
  • IO
  • 线程
  • JDBC
  • Java Web(1)
  • 前端
  • 框架(1)
  • Spring
  • SpringMVC
  • Mybatis
  • Struts
  • Hibernate
  • JVM(5)
  • 其他(2)


持续更新中(2020-4-25)

数据结构

算法(1)

1说明排序算法时间复杂度

牛客网java基础笔试题 牛客网软件测试笔试题_牛客网java基础笔试题

Linux

1命令javac-d参数的用途是?(指定编译后类层次的根目录

javac -d 指定放置生成的类文件的位置

javac -s 指定放置生成的源文件的位置

基础(2)

1.Java程序的种类有( B C D

牛客网java基础笔试题 牛客网软件测试笔试题_Java_02


解析 B:AppletJava小程序不能独立运行(嵌入到Web中)。 由Java兼容浏览器控制执行。

C:ApplicationJava应用程序”是可以独立运行的Java程序。由Java解释器控制执行。

D:Serverlets是Java技术对CGI 编程的解决方案。是运行于Web server上的、作为来自于Web browser 或其他HTTP client端的请求和在server上的数据库及其他应用程序之间的中间层程序。

Serverlets的工作是:

读入用户发来的数据(通常在web页的form中)

找出隐含在HTTP请求中的其他请求信息(如浏览器功能细节、请求端主机名等。)

产生结果(调用其他程序、访问数据库、直接计算)

格式化结果(网页)

设置HTTP response参数(如告诉浏览器返回文档格式)

将文档返回给客户端。2.下列不正确的 Java 语言标识符是(C

牛客网java基础笔试题 牛客网软件测试笔试题_java_03


解析

牛客网java基础笔试题 牛客网软件测试笔试题_中间件_04

数据类型(3)

1.下面的Java赋值语句哪些是有错误的 (B F

牛客网java基础笔试题 牛客网软件测试笔试题_java_05


解析 B:若不声明的,默认小数都用double来表示,所以如果要用float的话,则应该在其后加上f

例如:float a=1.63;//会显示错误,正确的写法为float a=1.63f;

E:\0---空格

F:java装箱,对于Integer和Double装箱只能装对应的数据类型,不对应就会报错;装箱过程中调用的是Double类的valueOf( double d )方法, 而这里是100为int型, 所以编译会“cannot convert from int to Double”

2下面赋值语句中正确的是(A

牛客网java基础笔试题 牛客网软件测试笔试题_java_06


解析 java中整型默认的是int,浮点默认的是double.

B: double类型的11.1 转成 float,是需要强制转换

C: double类型的0.0 转成 int,也是需要强制转换

D: int 转为 封装类型Double,是无法编译

Double oD = 3.0, 会把double类型的3.0自动装箱为Double,没有问题

3.设有下面两个赋值语句:
a = Integer.parseInt(“1024”);
b = Integer.valueOf(“1024”).intValue();
下述说法正确的是(a和b都是整数类型变量并且它们的值相等。
解析intValue()是把Integer对象类型变成int的基础数据类型;
parseInt()是把String 变成int的基础数据类型;
Valueof()是把String 转化成Integer对象类型;(现在JDK版本支持自动装箱拆箱了。)
本题:parseInt得到的是基础数据类型intvalueof得到的是装箱数据类型Integer,然后再通过intValue转换成int

面向对象

集合

异常

IO

线程

JDBC

Java Web(1)

1在Web应用程序的文件与目录结构中,web.xml是放置在( WEB-INF目录 )中。

牛客网java基础笔试题 牛客网软件测试笔试题_java_07

前端

框架(1)

Spring

SpringMVC

Mybatis

1Struts框架中如果要使用Validation作验证的话,需要使用以下哪个Form?(DynaValidatorActionForm 动态验证表单)

牛客网java基础笔试题 牛客网软件测试笔试题_牛客网java基础笔试题_08

Struts

1.关于struts框架,下面那些说法是正确的?

答案:B
A,structs可以进行文件上传
B,structs基于MVC模式,MVC是模型,视图,控制器,是一种设计模式
C,structs框架让流程结构更清晰
D,structs需要很多 action类,会增加类文件数目

Hibernate

1.hibernate 开发中,关于 POJO 类对象的状态说法正确的是()。

牛客网java基础笔试题 牛客网软件测试笔试题_Java_09

解析 Hibernate Pojo的三态分别为transient(瞬时态),persistent(持久态),detached(游离态)

官方给出的三态与Session的关系如下:

transient: never persistent, not associated with any Session
persistent: associated with a unique Session
detached: previously persistent, not associated with any Session

三种状态间相互转换关系,及他们在数据库、session中的状态如下:

a.当我们new一个pojo时,它处于瞬时态,此时与session、数据库均无任何关联。

b.此后,我们获得session并开启hibernate事务,调用save(),persist(),saveOrUpdate()方法,将pojo转变为持久态,此时session中存有这个pojo,但直到transaction.commit()被调用时,sql语句才会执行,此后数据库中也才有此条数据。

c.但当commit()并且session.close()执行过后,pojo就变为了游离态,也就是说,数据库中有该记录,但session中不再有。

d.持久化状态的实例,也可以重新变成瞬时态,那就是调用delete()方法。

e.通过get()或load()方法得到的pojo是持久态的。

f.游离态的pojo可以通过update(),saveOrUpdate(),lock()和replicate()方法重新成为持久态。

g.调用merge()方法后,pojo维持原态,但内容会被更新到数据库
1 JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台系统体系结构网络传输协议灵活的开发无缝集成的系统、网络和服务管理应用

JVM(5)

1 下面关于程序编译说法正确的是(C

牛客网java基础笔试题 牛客网软件测试笔试题_java_10


解析 A 字节码文件

B 与操作系统无关

D jvm可以有不同实现,低版本不一定能执行高版本的.

编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。像C/C++等都是编译型语言。程序执行效率高,依赖编译器,跨平台性差些。C、C++、Delphi等.
解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等

Java不同于一般的编译语言和直译语言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行”的跨平台特性, 所以说java是一种解释型的语言

2在JVM中,内存分为堆内存(heap)栈内存(stack)。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用。还需注意的一点,基本数据类型是存储在栈内存中

3.下面关于JAVA的垃圾回收机制,正确的是( B

牛客网java基础笔试题 牛客网软件测试笔试题_Java_11


解析 java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾4以下哪项陈述是正确的?(E)

牛客网java基础笔试题 牛客网软件测试笔试题_中间件_12


解析垃圾回收在jvm中优先级相当相当低

真正宣布一个对象死亡,至少需要经历2次标记过程。当第一次标记时会同时进行一次筛选(判断此对象是否有必要执行finalize方法)。如果对象没有覆盖该方法,就面临死亡,所以说这个方法是对象逃脱死亡命运的最后一次机会。

5以下哪些jvm的垃圾回收方式采用的是复制算法回收

牛客网java基础笔试题 牛客网软件测试笔试题_Java_13


解析 两个最基本的java回收算法:复制算法标记清理算法

复制算法:两个区域A和B,初始对象在A继续存活的对象被转移到B。此为新生代最常用的算法

标记清理:一块区域,标记可达对象(可达性分析),然后回收不可达对象,会出现碎片,那么引出

标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象

两个概念:新生代年老代

新生代:初始对象,生命周期短的

永久代:长时间存在的对象

整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收

P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法

Parallel New(并行)收集器新生代采用复制算法老年代采用标记整理

Parallel Scavenge(并行)收集器,针对新生代,采用复制收集算法

Serial Old(串行)收集器新生代采用复制老年代采用标记整理

Parallel Old(并行)收集器,针对老年代标记整理

CMS收集器,基于标记清理

G1收集器:整体上是基于标记整理,局部采用复制

其他(2)

1.关于中间件特点的描述.不正确的是(A

牛客网java基础笔试题 牛客网软件测试笔试题_编程语言_14

中间件是一种独立的系统软件或服务程序分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递通过中间件,应用程序可以工作于多平台或OS环境。

(简单来说,中间件并不能提高内核的效率,一般只是负责网络信息的分发处理

中间件特点的描述:

  1. 中间件应支持标准的协议和接口
  2. 中间件可运行于多种硬件和操作系统平台上
  3. 跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互

2.下列语句哪一个是不正确的(D

牛客网java基础笔试题 牛客网软件测试笔试题_java_15