2018-5-18 东方微银Java笔试题

第一部分:选择题共36个(有多选)
1.以下对继承的正确描述是(   )
A、在Java中类只允许单一继承
B、在Java中一个类只能实现一个接口
C、在Java中ー个类不能同时继承一个类和实现一个接口
D、在Java中接口只允许单一继承
【正确答案】A
【答案解析】 该题考查的是类的继承。继承分为单继承和多继承两种形式。单继承允许一个类可以有多个子类,但只能有一个父类;多继承则允许一个类不仅可以有多个子类,还可以有多个父类。但需要注意一点,Java只支持单继承,但可以通过接口实现多继承的功能。一个类可以同时继承一个类和实现一个接口。
 
2.以下不属于Java基本数据类型的是(   )
A、in   B、 Boolean   C、 float   D、char
【错误答案】未填写
【正确答案】B
【答案解析】boolean是基本数据类型,Boolean是它的封装类,和其他类一样,有属性有方法,可以new。
 
3.应使用哪种修饰符定义一个类域或类方法?(    )
A、static   B、 package    C、 private   D、 public
【错误答案】CD
【正确答案】A
【答案解析】 类域就是定义在类里面的变量,即静态成员;类方法是定义在类里面的函数,即静态方法。
 
4.参考以下代码,关于该程序以下哪个说法是正确的?(    )
public class Person {
static int arr[ ] = new int[3];
public static void main (String a[ ])
{
    System. out. println(arr[0]);     }
}
A、编译时将产生错误     B、编译时正确,运行时将产生错误
C、输出零                      D、输出空
【正确答案】C
【答案解析】 输出数组的首地址arr[0],int类型的初始值为0。
 
5.下列语句中,哪些关于Java内存回收的说明是正确的?(   )
A、程序员必须创建一个线程来释放内存
B、内存回收程序负责释放无用内存
C、内存回收程序允许程序员直接释放内存
D、内存回收程序可以在指定的时间释放内存对象
【错误答案】BC
【正确答案】B
【答案解析】垃圾回收程序是一般是在堆上分配空间不够的时候会自己进行一次GC,程序员不需要也不能主动释放内存,A不正确;在Java里,内存的释放由垃圾回收程序进行管理,程序员不能直接进行释放,C不正确;程序员可以调用System.gc( )方法运行垃圾回收器,但是不能指定时间,D不正确。
 
6.以下代码段执行后的输出结果为(  )
    int x =-3;
    int y = -10;
    System.out.println(y % x);
A、-1    B、2    C、1    D、3
【错误答案】C
【正确答案】A
【答案解析】 算术运算符“%”是取余数,a %b是求a除以b所得的余数, 求余后的符号和被求余的数值的符号一致。
 
7.有以下程序片段,下列哪个选项不能插入到行1。(   )
 1.
 2. public class Interesting {
 3. //do sth
 4. }
A、 import Java.awt.*;       B、 package mypackage;
C、 class Otherclass{  }      D、public class Myclass{  }
【错误答案】C
【正确答案】D
【答案解析】 一个java文件中只能有一个public class出现,并且public class 后面所跟的类名必须和文件名一模一样(区分大小写)。
 
8.假设有如下两个赋值语句:
    a= Integer. parseInt(“5”);
    b= Integer. valueOf(“5”). intValue();
下述说法正确的是(  )
A、a是整数类型变量,b是整数类对象。
B、a是整数类对象,b是整数类型变量。
C、a和b都是整数类对象并且值相等
D、a和b都是整数类型变量并且值相等。
【正确答案】D
【答案解析】 parseInt(String s )方法是类Integer的静态方法,它的作用就是将形参 s 转化为整数,比如:Interger.parseInt("5")=5,valueOf(String s )也是Integer类的静态方法,它的作用是将形参 s 转化为Integer对象,
Interger.valueOf("5")=Integer(5),这时候Integer(5)就是整数5的对象表示形式,它再调用intValue()方法,就是将5的对象表示形式转化为基本数据5,所以D正确。
 
9. FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型?  (  )
A、OutputStream         B、File    C、InputStream           D、BufferedOutputStream
【错误答案】ACD
【正确答案】A
【答案解析】 FilterOutputStream 的作用是用来“封装其它的输出流,并为它们提供额外的功能”。它主要包括BufferedOutputStream, DataOutputStream和PrintStream。
(01) BufferedOutputStream的作用就是为“输出流提供缓冲功能”。
(02) DataOutputStream 是用来装饰其它输出流,将DataOutputStream和DataInputStream输入流配合使用,“允许应用程序以与机器无关方式从底层输入流中读写基本 Java 数据类型”。
(03) PrintStream 是用来装饰其它输出流。它能为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。
 
10. 哪种数组声明是不合法的(   )
A、 int[ ][ ] a = {{1,2} , {1,2,3} , {1,2,3,4}};
B、 int[ ][ ] a = new int[ ][4];
C、 int[ ][ ] a = new int[4][4];
D、 int[ ][ ] a = new int[4][ ];
【正确答案】B
【答案解析】Java中声明数组是指声明数组的名称和数组所包含的元素的数据类型。
声明 二维数组的语法格式:
    ①类型 数组名 [ ] [ ];
    ②类型[ ][ ] 数组名;
需要用new关键字来为二维数组分配内存空间。
 
为二维数组分配内存有两种方式:
int a [][] = new int[2][[4];        //直接分配行列
 
int b [][] = new int[2][];          //分配行,不分配列
b[0] = new int[2];                  //给第一行分配列
b[1] = new int[2];                  //给第二行分配列
 
注意:创建二维数组,可以只声明“行”的长度,而不声明“列”的长度。如果不声明“行”的数量,就是错误写法!
int a [][] = new int[2][];          //可省略“列”的长度
int b [][] = new int[][];           //错误写法!
int c [][] = new int[][2];          //错误写法!
 
11. 类Parent、Child定义如下:
    1. public class Parent
    2.{ public float aFun(float a, float b) throws
    3. IOException { }
    4.}
    5.public class Child extends Parent{
    6.
    7.}
将以下哪种方法插入行6是不合法的。(  )
A、float aFun(float a, float b){ }
B、public int aFun(int a, int b)throws Exception{ }
C、public float aFun(float p, float q){ }
D、public int aFun(int a, int b)throws IOException{ }
【正确答案】D
 
12. 以下修饰符中,只可以修饰 interface声明的某个接口的是(    )
A、private  B、protected  C、private protected  D、public
【正确答案】D
【答案解析】 接口只能被public和默认修饰符修饰。
 
【拓展】腾讯java工程师笔试卷
java8中,忽略内部接口的情况,不能用来修饰interface里的方法的有( )
A、private        B、public        C、protected        D、static
【正确答案】AC
 
13.有以下方法的定义,请选择该方法的返回类型(    )
    ReturnType tempMethod(byte x, double y) {
        return (short)x / y * 2;
     }
A、byte      B、 short      C、int       D、 double
【正确答案】D
【答案解析】  short型除以double型,会强制类型转换成double型。
 
14.关于以下代码段的说法正确的是(    )
  1. String a = "abcde";
  2. Stringbuffer b=new Stringbuffer("abcde);
  3. if(a equals(b))
  4.   b=null;
  5. if(b. equals(a))
  6.         a=null;
A、第1行编译错误, String的构造器必须明确调用
B、第3行编译错误,因为a与b有不同的类型
C、编译成功,但执行时在第5行有异常抛出
D、编译成功,过程中也没有异常抛出
【正确答案】D 
 
15.编译并运行以下程序,以下描述哪个选项是正确的(   )
  1. class Y {
  2.   protected String toString( ) {
  3.       return super.toString( ); }
  4. }
A、编译通过运行无异             B、编译通过但运行时出错
C、行2出错,不能成功编译       D、不能成功编译,行3出错
【正确答案】C
  
16.在HTML中,以下哪项表示页面背景?(  )
A、< body bgcolor=>        B、< body bkcolor=>        C、< body agcolor=>        D、<body color=>
【正确答案】A
 
17.以下哪项是链接(Link)基本语法? (   )
A、 <a goto="URL">...</a>      B、 <a herf="URL">...</a>
C、 <a link="URL">...</a)      D、<a href="URL">...</a>
【正确答案】D
【答案解析】A、C错误,超链接使用<a>标签定义,链接文档的地址在属性href中指定。B错误,herf拼写有误。
 
18.以下哪项HTML代码表示标尺线的大小?( )
A、<hr size=?>     B、<hr long=?>      C、<hr height=?>    D、<hr space=?>
【正确答案】A
【答案解析】<hr>标签是在 HTML 页面中创建一条水平线。可以在视觉上将文档分隔成各个部分。
由下列可选的属性可知BCD不正确。
    ①align 规定hr元素的对齐方式;
    ②noshade 规定hr元素的颜色呈纯色;
    ③size 规定hr元素的高度(厚度);
    ④width 规定hr元素的宽度。
 
19.html语言中,以下哪项可以创建一个位于文档内部的靶位的标记? (  )
A. <name="NAME">
B. <name="NAME"></name>
C. <a name="NAME"></a>
D. <a name="NAME"
【正确答案】C
【答案解析】考察HTML连接的书签链接(name属性)。
    建立书签: <a  name=”name” >文字</a>
    建立指向该锚的链接: <a href=“#书签名”>文字</a>
 
20.声明一个对象,以下代码中,哪项可以正确给它加上name属性和show方法显示其name值? (   )
A、 var obj=[name: "zhangsan", show: function( ) {alert(name) ; } ] ;
B、 var obj={name: "zhangsan", show: “ alert(this.name)” } ;
C、 var obj={name: "zhangsan", show: function( ) { alert (name) ; } } ;
D、 var obj={name: "zhangsan", show: function( ) {alert (this.name) ; } } ;
【正确答案】D
【答案解析】A语法错误,应使用{ };B错误,需要定义function( )函数对象;C错误,缺少this指向全局对象name。
  
21.下列Javascript语句中,能正确在页面的状态栏中显示“已经选中该文本框”的是(  )
A、window. status="已经选中该文本框"        B、document. status="已经选中该文本框"
C、window. screen="已经选中该文本框"       D、document. screen="已经选中该文本框"
【正确答案】 A
【答案解析】window.screen对象包含有关用户屏幕的信息。window.status对象可设置或返回窗口状态栏中的文本。
 
22.在如下的 Javascript语句中,(  )实现了检索当前页面中的所有表单元素中的所有文本框,并将它们的内容全部清空
A、for(var i=0; i<form1.elements.length; i++) {
    if (form1.elements[i].type=="text")
        form1.elements[i].value=" ";
    }
B、for (var i=0; i<document.forms.length; i++) {
    if (forms[0].elements[i].type==”text”)
    forms[0].elements[i].value=" ";
    }
 
C、if (document.form.elements.type=="text")
    form.elements[i].value=" ";
 
D、for (var i=0; i<document.forms.length; i++) {
    for (var j=0;j<document.forms[i].elements.length; j++) {
    if (document.forms[i].elements[j].type=="text")
        document.forms[i].elements[j].value=" ";
    }
}
【正确答案】D
 
23. 在表单(form1)中有一个文本框元素(fname),用于输入电话号码,格式如:010-82668155, 要求前3位是010,紧接一个“-”,后面是8位数字。要求在提交表单时,根据上述条件验证该文本框中输入内容的有效性,下列语句中,(   )能正确实现以上功能
A. var str = form1.fname.value;
if (str.substr(0,4) != ”010-” || str.substr(4).length !=8 || isNaN (parseFloat(str.substr(4))))
alert (“无效的电话号码!”);
B. var str = form1.fname.value;
if (str.substr(0,4) != ”010-” && str.substr(4).length != 8 && isNaN(parseFloat(str.substr(4))))
alert (“无效的电话号码!”);
C. var str = form1.fname.value;
if (str.substr(0,3) != ”010-” || str.substr(3).length != 8 || isNaN(parseFloat(str.substr(3))))
alert (“无效的电话号码!”);
D. var str = form1.fname.value;
if (str.substr(0,4) != ”010-” && str.substr(4).length != 8 && !isNaN(parseFloat(str.substr(4))))
alert (“无效的电话号码!”);
【正确答案】A
【答案解析】①str.substr(0,4)!="010-"判断前四个字符是否为010-;②str.substr(4).length!=8判断-后面字符的长度是否为8;③isNaN( parseFloat(str.substr (4)))判断后面的字符是否为数字,三个条件有一个不满足则输入有误。
 
24. 关于正则表达式声明6位数字的邮编,以下代码正确的是(   )
A. var reg = /\d6/;                B. var reg = \d{6}\;
C. var reg = /\d{6}/;              D. var reg = new RegExp(“\d{6}”);
【错误答案】D
【正确答案】C
【答案解析】正则表达式以/开始,以/结束,B、D不正确;\d表示匹配一个数字字符。等价于[0-9]。{n}中的n是一个非负整数,表示匹配确定的n次,A不正确。
 
25.在J2EE中,使用过滤器Filter时,可在web.xml文件的(   )元素中包含<init-param>元素。
A、<filter>     B、<filter-mapping>     C、<filter-name>       D、<filter-class>
【错误答案】C
【正确答案】A
【答案解析】web.xml有两个用于过滤器的元素,分别是filter和filter-mapping,filter元素向系统注册一个过滤对象,filter-mapping元素指定该过滤对象所应用的URL。
filter元素具有6个子元素:
    ①icon(可选)它声明IDE能够使用的一个图象文件。
    ②filter-name(必需)它给过滤器分配一个选定的名字。
    ③display-name(可选)它给出IDE使用的短名称。
    ④description (可选)它给出IDE的信息,提供文本文档。
    ⑤filter-class (必需)它指定过滤器实现类的完全限定名。
    ⑥init-param (可选)它定义可利用FilterConfig的getInitParameter方法读取的初始化参数。单个过滤器元素可包含多个init-param元素。
 
filter-mapping具有3个子元素:
    ① filter-name (必需) 必须与用filter元素声明时给予过滤器的名称相匹配。
    ② url-pattern 以斜杠(/)开始, 它指定过滤器应用的URL。
    ③ servlet-name 此元素给出一个名称,此名称必须与利用servlet元素给予servlet或JSP页面的名称相匹配。不能给单个filter-mapping元素提供多个servlet-name元素项。如果希望过滤器适合于多个servlet名,可重复这个filter-mapping元素。
 
26.在J2EE中,以下哪项不是JSP隐式对象?(  )
A、pageContext     B、context     C、application    D、out
【正确答案】B
【答案解析】JSP所支持的九大隐式对象
对象
描述
request HttpServletRequest 接口的实例
response HttpServletResponse 接口的实例
out JspWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext
PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page 类似于Java类中的this关键字
Exception
Exception类的对象,代表发生错误的JSP页面中对应的异常对象
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27.下面关于构造函数的说法不正确的是(  )
A、构造函数也属于类的方法,用于创建对象的时候给成员变量赋值。
B、构造函数不可以重载。
C、构造函数没有返回值。
D、构造函数一定要和类名相同。
【错误答案】C
【正确答案】B
【答案解析】 Java 构造函数不可以继承,因此不能被重写,但可以被重载。
 
28、 break语句(  )
A、只中断最内层的循环                                    B、只中断最外层的循环
C、借助于标号,可以实现任何外层循环中断      D、只中断某一层的循环
【错误答案】C
【正确答案】A
 
29、下列哪个类声明是正确的(  )
A、 abstract final class H1 {…}           B、 abstract private move( ) (…}
C、 protected private number;            D、 public abstract class Car {…}
【正确答案】D
【答案解析】 考查对类声明的掌握程度。 选项A错误,abstract与final不能同时出现在类声明中;选项B错误,类不能声明为private,缺少Class关键字;选项C错误,不能同时用两个访问修饰符, 还有number的数据类型没有给出。
 
30、Java中哪个类提供了随机访问文件的功能()
A、 RandomAccessFile类             B、 RandomFile类
C、 File类                                      D、 AccessFile类
【正确答案】A
【答案解析】Java核心类库(IO)随机访问文件RandomAccessFile, 表示可以在该文件任何位置读取数据。
 
31、线程调用了 sleep( )方法后,该线程将进入(   )状态。
A、可运行状态       B、运行状态     C、阻塞状态     D、终止状态
【正确答案】C
【答案解析】Thread.sleep()方法,调用该方法使当前的线程进入休眠状态( 阻塞状态)设定休眠xxxx毫秒数后进入运行状态,并不释放所持有的对象锁,休眠时间结束后线程回到就绪状态。
 
32、线程控制方法中, yield()的作用是(  )
A、返回当前线程的引用       B、使比其低的优先级线程执行
C、强行终止线程                  D、只让给同优先级线程运行
【正确答案】D
【答案解析】Thread.yield()方法的作用:暂停当前正在执行的线程,并执行其他线程,(可能没有效果)。yield()让当前正在运行的线程回到可运行状态,以允许具有 相同优先级的其他线程获得运行的机会。
 
33、下列不是java的输入输出流的是(  )
A、文本流       B、字节流       C、字符流       D、文件流
【错误答案】AD
【正确答案】A
 
34、下列不属于 FileInputStream输入流的read( )成员函数的是(  )
A、 int read();                                                B、 int read( byte b[]);
C、 int read(byte b[], int offset, int len);         D、 int read( int line);
【正确答案】D
【答案解析】FileInputStream继承自InputStream类,用于读取本地文件中的字节数据;从输入流中读取数据最常用的方法如下:
    ①read()方法:是从输入流中读取一个数据的字节,如果没有输入可用,此方法将阻塞。返回下一个数据字节,如果已达到文件末尾,返回-1。
    ②read(byte b[], int offset, int len)方法: 将输入流中最多 len 个数据字节读入 byte 数组。尝试读取 len 个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。
    ③read( byte b[])方法: 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。
 
35、在Java编程语言中,TCP/ IPsocket连接是用java.net包中的类实现的。其连接步骤和方法是(  )
A、服务器分配一个端口号。如果客户请求一个连接,服务器使用accept( )方法打开socket连接
B、客户在host的port端口建立连接
C、服务器和客户使用 InputStream和 OutputStream进行通信
D、以上全部
【正确答案】D
 
36、自定义类型转换是由按优先关系从低级数据转换为高级数据,优先次序为(  )
A、char-int-long-float-double
B、int-long-float-double-char
C、long-float-int-double-char
D、以上都不对
【正确答案】A
【答案解析】考查自动转换的优先关系。
 
 第二部分:简答题共6个
1、简述JVM类加载过程中的的三个步骤,并说明每个步骤的实现机制。
 JVM的类加载机制就是,JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验、转换解析、初始化,使这些数据最终成为可以被JVM直接使用的Java类型。
    类加载过程包括三个步骤:
    ①加载:
        通过一个类的全限定名(包名与类名)来获取定义此类的二进制字节流(Class文件);
        将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;
        在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。
    ②连接:类的连接分为3步
        验证:验证被加载后的类是否有正确的结构,类数据是否会符合虚拟机的要求,确保不会危害虚拟机安全。
        准备:为类的静态变量(static filed)在方法区分配内存,并赋默认初值(0值或null值)。
        解析:将类的二进制数据中的符号引用换为直接引用。
    ③初始化:为静态变量赋程序设定的初值。
 
2、简述 javascript中的 prototype和闭包
    prototype:
        每一个函数都具有一个prototype属性。
        此属性是一个指针,能够指向一个对象,而此对象将会被由构造函数创建的对象实例所共享,也就是会继承此对象。
     闭包:
        简单的说,javascript允许使用内部函数——即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
 
3、简述FTP、SMTP、SSH、Telnet、SFTP。
【FTP】文件传输协议(英文:File Transfer Protocol,简称为FTP)是用于在网络上进行文件传输的一套标准协议。它属于网络协议组的应用层。
【SMTP】Simple Mail Transfer Protocol,简单邮件传输协议。是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
【SSH】Secure Shell 的缩写,是建立在传输层基础上的安全协议,它本身属于应用层,同时可以为应用层提供安全传输服务。
【Telnet】著名的终端访问协议,传统的网络服务程序,如FTP、POP和Telnet,其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令。
【SFTP】SSH File Transfer Protocol ,有时也被称作 Secure File Transfer Protocol。它和SCP的区别是它允许用户中断传输,SCP拷贝速度稍快一些。
 
4、MySQL如何看执行计划,如何搭建MySQL主备?
①MySQL执行计划的生成方法:在相应的select语句前面加explain即可。
 
5、什么么是SSL,TLS? 为什么HTTPS相对比较安全?
【SSL】Secure Socket Layer,安全套接字层,位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
【TLS】Transport Layer Security,传输层安全协议,用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。
 
HTTPS协议就是HTTP 协议+SSL/TLS 协议=加密传输。为了数据传输的安全,HTTPS 在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
 
6、什么是DES、AES、RSA、DSA、MD5、SHA1。
①对称加密【DES、AES】——加密速度快,适合大量数据。des容易破解,一般用3重des,后来又出现了更快更安全的aes。
②非对称加密【RSA、DSA】——RSA使用公私钥的方法进行加解密,公钥用于加密,它是向所有人公开的 ; 私钥用于解密,只有密文的接收者持有。DSA和RSA加密解密过程相反,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性。DSA和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多。
③摘要【MD5、SHA1】 ——用于计算出一段不可逆向计算的数值,以此来验证该文件是否被修改。
 
第三部分:编程题共2个
1、分别编写出一个<outofmemeory>,<stackoverflow>异常程序
① OutOfMemoryError
package test;
import java.util.ArrayList;
import java.util.List;
public class OutOfMemoryTest {
    public static void main(String[] args){
        List list=new ArrayList();
        for(;;){
            int[] tmp=new int[1000000];
            list.add(tmp);
        }
    }
}
 
②StackOverFlowError
package test;
public class StackOverflowTest {
    public static void main(String[] args) {
        method();
    }
    public static void method(){
        for(;;)
            method();
    }
}
 
2、写一个死锁程序

猜你喜欢

转载自www.cnblogs.com/luckyliulin/p/9175642.html