美团点评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 结果溢出。