美团点评2017秋招笔试真题-后台开发&系统工程师A

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiao__jia__jia/article/details/82462238

           美团点评2017秋招笔试真题-后台开发&系统工程师A
 



下面代码输出的结果是?
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
print();
}
};
t.run();
System.out.print(“MT”);
}
static void print() {
System.out.print(“DP”);
}

DPMT
MTDP
MTDP和DPMT都有可能
都不输出
正确答案: A   你的答案: A (正确)

解析:start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()

关于以下程序,正确的说法是?

- String s1=“abc” + “def”;
- String s2=new String(s1);
- if(s1 == s2)
- System.out.println(“===succeed===");
- if(s1.equals(s2))
- System.out.println(“===equals() succeed===");
行4与行6都执行
行4执行,行6不执行
行4不执行,行6执行
行4不执行,行6不执行
正确答案: C   你的答案: C (正确)

关于实模式和保护模式的描述正确的是?

实模式下的地址是计算公式是:段值*16+偏移,其中段值16位,偏移16位,访问的地址范围1MB,如果程序访问超过1MB的地址,系统会发生异常
决定实模式与保护模式的关键是CR1寄存器中的PE位,当为0时为实模式,为1位保护模式
在保护模式下,通过调用门,可以实现不同特权级之间的代码转移
保护模式下,共有4个特权级别,0特权级的任务访问3特权级的段时会触发常规保护错误(#GP)

正确答案: C   你的答案: B (错误)
解析:A:超过1MB会取模运算。B:CR0寄存器的PG和PE位。PG是否分页,PE是否保护。D : 0特权等级最高,可以任意访问.
下列需要使用队列做辅助存储空间的操作是?
查找哈希表
先序遍历二叉树
广度优先搜索图
深度优先搜索图

正确答案: C   你的答案: A (错误)
解析:这题大意了 ,广度优先搜索用到队列,因为是先进先出;深度优先搜索用到栈,后进先出,向根节点遍历

若一棵二叉树的前序遍历序列为 a, e, b, d, c,后序遍历序列为 b, c, d, e, a,则根结点的孩子结点是?
只有 e
有 e、b
有 e、c
无法确定

正确答案: A   你的答案: D (错误)
解析:前序遍历:( 根--左--右  )  后序遍历(左--右--根)
是根节点 从前序来看,ebdc 一部分左一部分右
从后序来看,bcde一部分左一部分右      
可看到e在两头 
所以a只有一个子节点e(可能是左节点,可能右节点)

关于数据库索引,以下说法正确的是?
针对某些字段建立索引,能够有效的减少相关数据库表的磁盘空间占用
针对某些字段建立索引,能够有效的提升相关字段的读与写的效率
常见数据库管理系统,通常使用hash表来存储索引
数据库索引的存在,可能导致相关字段删除的效率降低

正确答案: D   你的答案: D (正确)
解析:A:增加索引会增加磁盘占用
B:建立索引可以提升查询速度,即读速度;但在一定程度上降低写速度
C:数据库一般使用B*树作为索引
D:删除数据需要调整索引,所以会降低效率

把60个糖果分给5个小朋友,每个小朋友至少分到10个糖果,请问有几种分法?
126
330
1001
2973
正确答案: C   你的答案: A (错误)
解析:先每个人分10个,还剩10个,5个小朋友随意分,在剩下的10个糖果中,小朋友得到的数量也可以为空,具体的算法就是把剩下的10个糖果和4个板放在一起,一共14个,选择4个当板,就是C(14,4)

3的102次方结尾数字是?
9
1
3
7
正确答案: A   你的答案: B (错误)

解析:3的N次方尾数是有规律的 3--9--7--1 四个一组循环 102除4余2。这题我居然算错了,渣渣,愧对向旁边妹子借来的草稿纸

下列算法的时间复杂度是
int  fun(int n){ 
if(n<2){ 
return 1; 
} 
return n*fun(n-2);
}


0(nlog2n) 
0(n)
0(n2)
0(log2n)
正确答案: B   你的答案: C (错误)
解析:复杂度是衡量计算次数而不是计算数据的数量的。这个函数一共只会执行约n/2次 操作。所以是o(n)

关于递归公式的复杂度,可以看看下面的总结表

下面对于cookie的描述中错误的是?
用于实现session跟踪技术
Cookie是由服务器保存在客户端的文本文件,大小限制在4kb左右
Cookie在服务端与客户端之间往返时通过HTTP Headers进行传输
HTTP请求中的Cookie是加密传递的

正确答案: D   你的答案: D (正确)
解析:于D,在HTTP请求中的cookie是明文传递的,所以安全性成问题。(除非用HTTPS)

以下不属于tcp连接断开的状态是?
TIME_WAIT
FIN_WAIT_1
SYN_SENT
FIN_WAIT_2

正确答案: C   你的答案: C (正确)

下面哪个不是进程间的通信方式?
 

回调
共享内存
消息传递
信号量
正确答案: A   你的答案: A (正确)

解析:进程间的通信方式:管道 信号量 消息队列 信号 共享内存 套接字

以下代码编译不报错的有?

 

class MyString extend String{ 
    private String myString;    
    public MyString(String s){        
        this.myString = s;    
    }    
    public void print(){        
        System.out.print(myString);    
    }
}
class NULL {    
    private String value = null;    
    public void print() {        
        System.out.print(String.format("%s", null));    
    }    
    public void setValue(String value) {        
        this.value = value;    
   }
}
class Calculate{    
    private int value = 1; 
    public static double calculate(){  
        return this.value * getDiscountRate(); 
    } 
    public double getDiscountRate(){  
        return 0.5; 
   }
}


 

class MyDouble{ 
    private int  value = 1;    
    public Boolean equals(Object o){       
        if (this == o) 
            return true;       
        if (o == null || getClass() != o.getClass()) 
            return false;       
        MyDouble aMyDouble = (MyDouble)o;       
       return value == aMyDouble.getValue();    
   }    
   public int getValue() {        
       return value;    
   }    
   public void setValue(int value) {        
        this.value = value;    
   }
}


正确答案: B   你的答案: D (错误)

解析:

第一个:1,extends 不是 extend。2,String 是 public final class String 无法继承。

第二个:1,this 只能在对象的方法里用,不能在 static 里面用,static 方法是这个类的方法,是静态的方法里面不能用 this。同理 getDiscountRate() 方法是对象的方法,如果要调用只能先 new 一个对象出来,然后使用这个对象的方法。或者将这个方法改成 static。

第三个:这是 Object 的 equals 方法,这里返回的 boolean 不是 Boolean

    public boolean equals(Object obj) {
        return (this == obj);
    }



下面java concurrent包下的4个类中差别最大的一个是?
CountDownLatch
Future
Semaphore
ReentrantLock

正确答案: B   你的答案: C (错误)
解析:A、Semaphore:类,控制某个资源可被同时访问的个数;
B、ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;
C、 Future:接口,表示异步计算的结果;

D、 CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类


哪些设计模式能够提高系统扩展性?
singleton
abstract factory
adapter
Decorator
正确答案: B C D   你的答案: B C D (正确)
解析:

A单例模式没有提高扩展性

B工厂方法实现松耦合,可以提高扩展性

C适配器模式可以将一个接口转换成另一个接口,方便引入外部接口

D装饰者模式可以扩展接口功能


下面对多线程和多进程编程描述正确的是?

线程的数据交换更快,因为他们在同一地址空间内
线程因为有自己的独立栈空间且共享数据,不利于资源管理和保护
多进程里,子进程可获得父进程的所有堆和栈的数据;
进程比线程更健壮,但是进程比线程更容易杀掉。
正确答案: A C D   你的答案: A D (错误)
解析:B选项有点模糊,原题:

线程因为有自己的独立栈空间且共享数据,所有执行的开销相对较大,同时不利于资源管理和保护

 有四个整数,用8位补码分别表示为r1=FEH, r2=F2H, r3=90H, r4=F8H。运算结构存入8位寄存器中,不会溢出的是?

 r1*r2
r2*r3
r1*r4
r4*r2
正确答案: A C D   你的答案: B (错误)
解析:用补码表示时8位寄存器所能表示的整数范围为-128到+127。 
r 1 =(15×16+14)-256=-2; 
r 2 =(15×16+2)-256=-14; 
r 3 =(9×16+0)-256=-112; 
r 4 =(15×16+8)-256=-8; 
则r 1 ×r 2 =28,r 2 ×r 3 =1568,r 1 ×r 4 =16,r 2 ×r 4 =112,只有r 2 ×r 3 结果溢出。

 

猜你喜欢

转载自blog.csdn.net/xiao__jia__jia/article/details/82462238