美团点评后台开发历年习题练习

美团点评2017秋招笔试真题(1)-后台开发

1. 下述解决死锁的方法中,属于死锁预防策略的是?资源有序分配法

解析:

  • 死锁产生条件:
    (1)系统资源不足。(2)进程运行推进顺序不合适。(3)资源分配不当。
  • 四个必要条件:
    (1)互斥条件:同一时间只能一个进程使用这个资源。(2)请求与保持请求:一个进程因请求资源而阻塞时,对已获资源保持不变。(3)不剥夺条件:不能强制剥夺进程的资源。(4)循环等待:若干进程形成头尾相连的循环等待资源关系。
  • 四个算法作用:
    (1)银行家算法:避免死锁(资源动态分配的过程中,用某种方法去阻止它进入不安全状态);不那么严格的限制产生死锁的必要条件的存在,而是在系统运行过程中小心的避免死锁的最终发生。每次先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。
    (2)资源有序分配法 :预防死锁(破坏死锁四个必要条件之一);系统中所有的资源都按某种规则统一编号,所有分配请求必须使用上升的次序进行,当遵守上升次序的规则时,若资源可以,则予以分配,否则等待。这样破坏了循环等待资源条件。
    (3) 资源分配图化简法:检测死锁(及时检测思死锁发生,为解除死锁创造条件),如果经过化简后,节点都不能化简为孤立节点,则代表形成死锁。
    (4)撤销进程法:解除死锁(常用方法是撤销或挂起一些进程,回收资源,分配给已经阻塞的,让它运行)。

2.下列代码的输出结果是(false),
boolean result=false?false:true==false?true:false;
System.out.println(""+result+"")

解析:
三目运算符的运算顺序是自右向左。 result={false?false:[(true==false)?true:false]}; ,先计算后面再计算前面,所以为false。

3.类a继承类b并重写b类的protected方法func时,a中func方法的访问修饰符可以是?protected/public

解析:子类继承父类的方法控制符必须大于或等于父类的访问控制符。并且不能抛出新异常或者比父类方法声明的检查异常更广的检查异常,但是可以抛出更少,更有限或者不抛出异常。

4.进程和线程是操作系统中最基本的概念,下列有关描述错误的是?线程有独立的虚拟地址空间,但是拥有的资源相对进程来说,只有运行所必须的堆栈,寄存器等。

解析:
(1)进程是程序的一次执行,而线程可以理解为程序中运行的一个片段。
(2)线程没有独立的地址空间,因此同一进程的一组线程可以访问该进程的资源。
(3)线程之间的通信简单,利用共享内存即可,而不同进程这之间的通信更为复杂,通常需要调用内核实现。
(4)进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响。而线程只是一个进程中的不同执行路径,线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程崩溃就等于整个进程死掉,所以多进程程序比多线程更要健壮,但在进程切换时,耗费资源较大,效率差,但对于要求并发且共享变量,只能用线程。

5.在数据库查询中使用函数执行效率会最慢,调用函数后,索引就不能发挥作用了。

6.1024! 末尾有多少个0? 253个

解析:
主要取决于乘法中因子2和5的个数,2的个数肯定大于5,所以我们统计5的个数即可(5,55,555,5555):
5的倍数:1024/5=104个;25的倍数:1024/25=40;125的倍数:1024/125=8;635的个数:1024/625=1;
所以共253个。

7.HTTP的会话有四个过程,请选出不是的一个? 传输数据

解析:四个过程:建立连接,发送请求,返回响应,关闭连接。传输数据的过程在请求和响应的session中。

8.关于TIME_WAIT状态的描述,下面说法错误的是?TIME_WAIT出现在被动关闭一方,CLOSE_WAIT出现在被动关闭一方

解析:通信双方建立TCP连接,主动关闭的乙方会进入TIME_WAIT状态,从TIME_WAIT状态到CLOSED状态,有一个超时设置,这个超时设置是 2*MSL,TIME_WAIT确保有足够的时间让对端收到了ACK,如果被动关闭的那方没有收到Ack,就会触发被动端重发Fin,一来一去正好2个MSL,这样就有足够的时间让这个连接不会跟后面的连接混在一起。如下图:
在这里插入图片描述

9.红黑树的性质:

(1)节点是红色或黑色。(2)根节点为黑色。(3)每个叶节点是黑色的,空节点也为黑色。(4)红色节点的子节点为黑色。(5)从任一节点到每个叶子的所有路径都包含相同数目的黑色节点。

美团点评2017秋招笔试真题(2)-后台开发

1. start()用来开启一个新线程,进而调用run()方法时来执行任务,如果单独调用run()那么就和普通的函数一样,失去了线程的特性,程序会顺序执行。

2.索引知识:

索引是存储的表中一个特定列的数据结构,常见的为B-Tree,是在表的列上创建的。增加索引会增加磁盘占用,建立索引可以提升查询速度,即读速度,但在一定程度上降低写速度,删除索引需要调整索引,所以会降低效率。

3.cookie:

cookie是用户端保存用户状态,Session是服务端保存用户状态。它的作用:(1)用于实现session跟踪技术。(2)cookie是由服务器保存在客户端的文本文件,大小限制在4KB左右。(3)cookie在服务端与客户端之间往返时通过HTTP Headers进行传输,因为HTTP是明文,所以有安全性的问题,建议用HTTPS。

4.C++设计模式:

(1)单例模式:只生成一个对象。
(2)工厂模式:实现松耦合,可以提高扩展性。
(3)适配器模式:将一个接口转换成另一个接口,方便引入外部接口。
(4)装饰者模式可以扩展接口功能。

发布了54 篇原创文章 · 获赞 8 · 访问量 5304

猜你喜欢

转载自blog.csdn.net/qq_43411555/article/details/105111230