2021年美團系統運維面試題

小編:管理員 69閱讀 2021.06.25

第1題:


有ABCD四個人要在夜里過一座橋,他們通過這座橋分別需要耗時1、2、5、10分鐘,現在只有一支手電,過橋時必須帶有手電,并且同時最多只能兩個人一起過橋。請問如何安排能夠讓四個人盡快都過橋。



1和2 先過。1返回,5和10先過,2返回,1和2一起過。一共時間=2+1+10+2+2=17分鐘


第2題:


 25匹馬賽跑,每次只能跑5匹馬,最快能賽幾次找出跑得最快的3匹馬?賽跑不能計時,并假設每匹馬的速度是恒定不變的。請給出答案并描述比賽過程。



 第一--五局:分成5個組,可以得出5個組的第一名

第六局:5個第一名一起跑,這樣可以得出最快的那一匹。

第七局:可能成為2,3名的再賽一次,包括最快組的2,3名,次快組的1,2名,第三快組的第1名。


所以一共是7次


第3題:


 在有團購之前,大家都是現場買門票,公園的門票是5元,某天售票處開門時沒有準備零錢。假設一天來購票的依次有2N個人,其中有N個人有5元零錢,其他N個人只有10元面值的錢;假設每人只買一張票。請問任何人都不必為找零而等待的概率是多少?



 任何人不必等的情況數 Cn=2N!/(N!*N!*(N+1)) 總的情況數 T=2N!/N!*N! 不必等的概率為:Cn/T = 1/(N+1)


第4題:


 有一個函數“int f(int n)”,請編寫一段程序調試函數f(n)是否總是返回0,并添加必要的注視和說明。



 int n = INT_MIN;

do

{

    if(0 != f(n))

    {

        //error

        break;

     }

}

while(n++ != INT_MIN);


if(n != INT_MIN) error;//


第5題:


 用你熟悉的語言編寫程序用兩個棧(Stack)模擬隊列(Queue)的先進先出操作,僅實現add、remove方法即可。
1)請先描述思路; 2)編寫完整代碼實現,編程語言不限。



 思路:棧是“先進后出”,隊列是“先進先出”,當向隊列中加入元素n,m,在隊列中n應該位于隊尾,當刪除時候,元素n最先刪除;向棧1中加入元素n、m時,m位于棧頂,將棧1中元素加入到棧2中,則n位于棧2的頂部,當刪除時,元素n先刪除,即實現了兩個棧模擬隊列的過程;

     

public class queue{

  private Stack<String> stackOne=new Stack<String>();

  private Stack<String>      stackTwo=new Stack<String>();

  

  public void add(String str){

      stackOne.push(str);

  }

  

  public void delete(){

     if(stackTwo.isEmpty()){

        while(!stackOne.isEmpty()){

           stackTwo.push(stackOne.pop());    

        }

     }

    if(stackTwo.isEmpty()){

       system.out.printIn("queue is empty");

    }

   else{

            stackTwo.pop();    

     }

   

     

 }


   

}


第6題:


 編寫函數,獲取兩段字符串的最長公共子串的長度,例如:
S1= GCCCTAGCCAGDE
S2= GCGCCAGTGDE
這兩個序列的最長公共子串是GCCAG,也就是說返回值。

1)請先描述思路;

2)編寫完整代碼實現,編程語言不限。



 這道題使用矩陣對角線能夠比較形象的描述問題解法,放出自己的C++代碼如下:

int longestCommonString(string s1, string s2)
{
  int len  = 0;

  int *temp = new int[s2.length()];
  memset(temp, 0,  s2.length() * sizeof(int));

  for (int i = 0; i < s1.length(); i++)
  {
   for  (int j = s2.length() -1; j >= 0; j--)
   {
     if (s1[i]  == s2[j])
    {
      if (i == 0 || j == 0)
         temp[j] = 1;
      else
          temp[j] = temp[j -   1] + 1;


       if (len < temp[j])  
         len = temp[j];  
     }  
  }
  else
    temp[j] = 0;
 }

 return len;
}


第7題:


 (iOS開發選做)實現多線程都有哪幾種方法?


第8題:


 (Android開發選做)關于Activity的生命周期,下拉statusbar時,桌面Activity會觸發哪幾個生命周期?系統關機時,彈出關機Dialog之后,此時,桌面Activity會觸發哪幾個生命周期?



 下拉時觸發:onPause(),onStop()

彈出dialog:onPause()


第9題:


 (系統運維選做)有主機A、B、C通過eth0和同一個交換機相連,A的IP地址為192.168.1.2,子網掩碼255.255.255.0,B的IP地址為192.168.2.2,子網掩碼255.255.255.0,C的IP地址為192.168.4.2,子網掩碼255.255.255.0,F希望A和B能夠通信,A和C、B和C不能通信。
1)假設能更改A和B的子網掩碼,要如何設置A和B的子網掩碼?
2)如果不能更改子網掩碼,需要在A和B做什么設置?
3)A和B通信時,C是否能夠通過sniffer截獲A和B通信的報文,如果只能截獲一部分報文,是哪一類報文?
4)C可以僅通過sniffer得知A和B的IP地址和MAC地址嗎?如果能,如何獲得?



 1) 通過修改A B掩碼使得它們能互相通信的話,只需要AB 同在一個子網。因此A 和B 的掩碼為255.255.252.0   ,   C不變

2)A的IP 地址修改為與B 同一個網段,如192.168.2.3


關聯標簽:
欧美日韩一区不卡在线观看_人妻少妇乳峰乱颤娇喘连连_欧美日韩亚洲国产一区二区