美图2018秋招Java笔试题
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
上一篇: 58同城2017秋招前端工程师笔试卷