欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

美图2018秋招Java笔试题

程序员文章站 2022-03-04 11:58:26
...


 

1、关于垃圾回收算法G1,哪个说法是错误的( B  )。

A.  并行和并发,具有多线程操作能力

B.  不适用堆空间太大的场景

C.  G1停顿时间更加可预测

D.  不会对系统吞吐量产生较大影响

2、以下程序的执行结果是?( D  )  

  class Base{

        final public void show() {

        System.out.println("Base::show() called");

        }

    }

    class Derived extends Base{

         public void show(){

          System.out.println("Derived::show()called");

          }

    }

    class Main{

         public static void main(String[] args) {

          Base b = new Derived();

            b.show();

          }

    }

A.  Derived::show()被调用

B.  Base::show()被调用

C.  Runtime Error

D.  Compiler Error

3、多线程中栈与堆是公有的还是私有的(D)

A.  栈私有,堆私有

B.  栈公有,堆私有

C.  栈公有,堆私有

D.  栈私有,堆公有

4、在SQL数据库一个班级表里只记录了100位同学的情况,那么对该表建立索引文件的描述正确的是(D)

A.  一定要,因为索引对于任何数据库表都是必要的

B.  没有必要,因为建立索引对任何数据库的性能都没有影响

C.  一定要,因为索引有助于加快搜索记录的进程

D.  不适宜,因为对少量记录的表进行索引实际上会产生不利的影响

5、Java垃圾回收算法CMS执行的顺序是( A  )

A.  初始标记->并发标记->并发预清理->重新标记->并发清理->并发重置

B.  初始标记->并发标记->重新标记->并发预清理->并发清理->并发重置

C.  初始标记->并发预清理->并发标记->重新标记->并发清理->并发重置

D.  初始标记->并发标记->重新标记->并发预清理->并发重置->并发清理

6、下列哪种情况会导致持久区jvm堆内存溢出(D) 

A.  循环上万次的字符串处理

B.  在一段代码申请上百M甚至上G的内存

C.  不断创建对象

D.  使用CGLIB技术直接操作字节码运行,生成大量的动态类

7、java.util.Comparator体现的设计模式是( B )

A.  Decorator

B.  Strategy

C.  Interpreter

D.  Command

8、什么样的数据结构被使用在功能redo-undo上?( D ) 

A.  queue

B.  Tree

C.  Graph

D.  stack

9、以下程序的输出是?( A  )

public class leftshift_operator {

      public static void main(String args[]){

        
          byte x = 64;

          int i;

          byte y;

          i = x<<2;

          y = (byte)(x<<2);

          System.out.print(i+ " " +y);

      }

}

A.  256  0

B.  0  256

C.  64  0

D.  0  64

10、以下程序的运行结果是( D )

public static void main(String args[]){

        Thread t = new Thread(){

        public void run(){

          pong();

          }

        };

        t.run();

        System.out.print("ping");

    }

    static void pong(){

      System.out.print("pong");

    }

A.  pingpong

B.  都不输出

C.  pingpong和pongping都有可能

D.  Pongping

11、以下哪个协议将数据包拆分并发送到网络中的指定地址的?( D  )

A.  Proxy  Server

B.  DNS

C.  Socket

D.  TCIP/IP

12、以下说法正确的是( C  )


  

  class Base extends Exception{}

    class Derived extends Base{}

    public class Main {

    public static void main(String args[]){

    //some other stuff

    try {

    //some monitored code

       throw new Derived();

    } catch(Base b)  {

      System.out.println("Caught base class exception");

    } catch(Derived d){

      System.out.println("Caught derived class exception");

    }

    }

}

A.  捕获base class exception

B.  Compiler Error因为derived不是异常类

C.  Compiler Error因为base class exception在derived class之前被捕捉

D.  捕捉derived class exception

13、下列程序的返回值是,其中arr[] = {9,12,2,11,2,2,10,9,12,10,9,11,2}且n为arr的大小?( B )

int fun(int arr[],int n){

        int x = arr[0];

        for(int i=1;i<n;i++)

            x = x^arr[i];

        return x;

    }

A.  12

B.  9

C.  0

D.  2

14、哪一个关键字keywords必须用在处理异常当中?( D )

A.  finally

B.  throw

C.  catch

D.  try

15、java中String是线程安全的吗?( B )

A.  不是

B.  是

16、有如下程序:

  String  s1 = new String(“abc”);

  String  s2 = “abc”;

  String  s3 = “a” + “bc”;

下列哪项执行结果为false( C )

A.  S2 = S3

B.  S1.equals(s2)

C.  S1 = S2

D.  S1.compareTo(s3) ==0

17、下列程序完成什么功能?( A )

 

int fun(int x, int y){

       if(y == 0)

    return 0;

    }

A.  x*y

B.  x+y

C.  x^y

D.  x+x*y

18、新建一个流对象,下面哪个选项的代码是错误的?( C

19、 )

A.  new BufferedWrite(new FileWriter(“a.txt”));

B.  new ObjectlnputStream(new FilelnputStream(“a.dat”));

C.  new BufferedReader(new FilelnputStream(“a.dat”));

D.  new GZIPOutputStream(new FileOutputStream(“a.zip”));

19、JDK新生代垃圾回收机制默认采用的是复制算法,影响该算法最关键的因素是( A  )

A.  对象存活率

B.  创建新对象的频率

C.  SurvivorRatio参数

D.  对象的大小

20、java.util.HashMap处理hash碰撞的方法是( A )

A.  拉链法

B.  线性探查法

C.  随机探测

D.  线性补偿探测法

 

 

多选题

1、以下哪些是运行时异常( ABCD )  

A.  java.lang.lndexOutOfBoundsException

B.  java.lang.NullPointerException

C.  java.util.ConcurrentModificationException

D.  java.time.format.DataTimeParseException

2、以下哪些能够保证线程安全( BC  )

A.  单例模式

B.  java.util.Hashtable

C.  synchronized

D.  volatile

3、垃圾回收算法CMS的缺点有哪些( ABC )

A.  需要更大的堆空间

B.  需要更多的CPU空间

C.  不会整理、压缩堆空间

D.  增加了回收的停顿时间

4、以下哪些属于工厂模式( ABC  )

A.  工厂方法模式

B.  简单工厂模式

C.  抽象工厂模式

D.  组合工厂模式

5、以下哪些语句可以正常创建Lock对象?( ABD )

A.  Lock lock = new ReentrantLock(true);

B.  Lock lock = new ReentrantLock();

C.  Lock lock = new Lock();

D.  Lock lock = new ReentrantLock(false);

6、以下程序的输出是( AC  )垃圾回收

public class Test {

    public static void main(String args[]) throws InterruptedException{

        Test t = new Test();

        //making t eligible for garbage collection

        t = null;

        //calling garbage collector

        System.gc();

        //waiting for gc to complete

        Thread.sleep(1000);

        System.out.println("end main");

        }

        @Override

        protected void finalize()

        {

        System.out.println("finalize method called");

        System.out.println(10/0);

        }

}

A.  end main

B.  其他所有

C.  finalize method called

D.  Throw java.lang.ArithmeticException:/by zero

7、哪些情况会触发FULL GC( ABCD )

A.  老年代空间不足

B.  统计得到的Minor GC晋升到旧生代的平均大小大于旧生代的剩余空间

C.  堆中分配很大的对象

D.  CMS GC时出现promotion failed和concurrent mode failure

8、以下哪些是spring的事物隔离级别:( ACD )

A.  PROPAGTION_SUPPORTS

B.  PROPAGATION_NESTED

C.  PROPAGATION_MANDATORY

D.  PROPAGATION_NEVER

9、下列关于java数组论述,正确的是:( ABCD )
A.  int[] x = {0};与int[] x = new int[1];的结果是完全等价的。

B.  String[] x = {“o” ,”k” ,”ok”);所创建的数组对象含有3个串对象。

C.  Int [] [] x = {{1},{1,2},{1,2,3},new int[1]};是正确语句。

D.  定义一个Java的多维数组变量,实际上是定义了将会指向数组对象的引用,该数组对象所包含的元素又将是另一个数组对象的引用。

10、以下哪些数据隔离级别会产生幻读( ABD )

A.  Read Uncommitted

B.  repeatable read

C.  Serializable

D.  read committed

 

编程题:

最长公共子串

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

有两个字符串(可能包含空格),请找出其中最长的公共连续子串, 输出其长度。

输入

给定两行字符串

输出

输出这两个字符串的最长公共连续子串的长度

 

样例输入

abcde

bcd

样例输出

3

 

bit位数计算

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

两个int32整数m和n的二进制表达,计算有多少个位(bit)不同?

输入

一行中给定两个数字

输出

输出这两个数字中bit不同的个数

 

样例输入

15 8

样例输出

3

转自:landry
链接:https://www.nowcoder.com/discuss/78792?type=2&order=3&pos=18&page=1
 

相关标签: Java