多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 雅虎2015校招面試總結

雅虎2015校招面試總結

來源:程序員人生   發布時間:2014-09-29 15:32:48 閱讀次數:3763次
時間:2014/9/26 下午1:30-5:00  地點:清華同方科技廣場D座11層

一面:基本上就是跟面試官閑聊,說了一會我的RTB大賽,然后考了一道算法題。題目是,對一個0和1組成的字符串加密,加密方法是encode[i] = code[i-1]+code[i]+code[i+1]。比如0110111加密后的結果是1222232。寫一個算法,輸入為加密后的串,輸出是解密的01串。
自己想了一會,并沒有太好的思路,最后在面試官提示下寫出了代碼,但還是有錯。回來寫了份代碼,很輕松,面試的時候一直在糾結怎么判斷解碼是否正確,其實很簡單,既然源碼是0和1,如果解密的結果為0/1,那就是對的,如果不為0/1,那就是錯了。
然后問了問TCP三次握手,Linux創建的子進程與父進程的關系,進程、線程如何同步,PV原子操作,如何把Linux命令行結果寫入文件。基本上都能說上來,有些答得不完整。

 public static byte[] decode(byte[] encode)
 {
      int N = encode.length;
 
      byte[] code = new byte[N];
 
      if(N==0)
          return code;
 
      code[0] = 2;
      if(N==1)
      {
           if(encode[0]==1||encode[0]==0)
               code[0] = encode[0];
           return code;
      }
 
      if(encode[0]<2)
      {
           code[0] = 0;
           code[1] = encode[0];
           for(int i=2;i<N;i++)
           {
                code[i] = (byte) (encode[i-1] - code[i-2] - code[i-1]);
                if(code[i]!=0&&code[i]!=1)
                {
                     code[0] = 2;
                     break;
                }
           }
      }
 
      for(int i:code)
           System.out.print(i+" ");
 
      System.out.println();
      code[0] = 1;
      code[1] = (byte) (encode[0]-1);
      for(int i=2;i<N;i++)
      {
           code[i] = (byte) (encode[i-1] - code[i-2] - code[i-1]);
           if(code[i]!=0&&code[i]!=1)
           {
                code[0] = 2;
                break;
           }
      }
 
      for(int i:code)
           System.out.print(i+" ");
 
      return code;
 }

二面:面試官一上來也是問我的RTB大賽。然后就面算法,第一道題是把字符串中連續的數字串加上1,比如"hih#32wih459"的結果是"hih#33wih460"。自己先是會錯意了,以為是把連續的數字字符串的尾子符的值加1,寫了一份代碼,面試官看了后說題意理解錯了,然后又寫了份代碼,把連續數字串parse成int,加上1后再toString()替換掉原來的數字串。面試官指出int可能會溢出,自己又說出了一種改進方法。回來寫了一下代碼,還真不簡單。

 public static String stringNumIncrease(String s)
 {
      StringBuilder str = new StringBuilder("");
      StringBuilder num = new StringBuilder("");
      StringBuilder chars = new StringBuilder("");
 
      for(int i=0;i<s.length();i++)
      {
           if(s.charAt(i)>='0'&&s.charAt(i)<='9')
           {
                if(!chars.toString().equals(""))
                {
                     str.append(chars);
                     chars.delete(0, chars.length());
                }
                num.append(s.charAt(i));
           }
           if(s.charAt(i)<'0'||s.charAt(i)>'9'||i==s.length()-1)
           {
                if(!num.toString().equals(""))
                {
                     byte carry = 1;
                     for(int k=num.length()-1;k>=0;k--)
                     {
                          int tmp = num.charAt(k)-'0';
                          if(tmp+carry<=9)
                          {
                               num.setCharAt(k, (char) (num.charAt(k)+carry));
                               break;
                          }
                          else
                          {
                               num.setCharAt(k, '0');
                               if(k==0)
                                    num.insert(0, '1');
                          }
                     }
                     str.append(num);
                     num.delete(0, num.length());
            }
            if(s.charAt(i)<'0'||s.charAt(i)>'9')
                 chars.append(s.charAt(i));
       }
      }
  str.append(chars);
  return str.toString();
 }

接著問了第二道算法題,題目是:一個字符串,可能由n(n>=2)個重復的子串組成。寫一個算法,判斷一個字符串能否被分割成n個相同的子串(最好找出最小的子串)。當時并沒有考慮到子串的長度必須是n的因子,回來后在同學的提示下,得出了下面這個算法,還不確定是否是最優的。
 public static String stringSplit(String s)
 {
      for(int i=1;i<=s.length()/2;i++)
      {
           if(s.length()%i==0)
           {
                String tmp = s.substring(0,i);
                int j=i;
                for(;j<s.length();j+=i)
                {
                     if(!s.substring(j,j+i).equals(tmp))
                          break;
                }
                if (j>=s.length())
                {
                     return tmp;
                }
           }
      }
      return "";
 }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 91在线色 | 美女网站在线观看 | 国产亚洲欧美日韩在线观看一区二区 | 亚洲综合网址 | 日本护士xxxxx高清免费 | 久久伊人成人网 | 精品久久久一二三区 | 欧美一级看片 | 色中色在线视频 | 亚洲精品日韩中文字幕久久久 | 国内精品久久久久影院亚洲 | 成人国内精品久久久久影 | 亚洲色大成网站www久久九九 | 国产欧洲亚洲 | 日本wwwwwwwww| 免费精品久久 | 高清国产一区二区 | 中文无码日韩欧免费视频 | 日本中文字幕永久在线 | 小说区图片区综合久久88 | 欧美一级成人毛片视频 | 国产精品福利在线观看秒播 | 亚洲精品专区一区二区欧美 | 伊人不卡久久大香线蕉综合影院 | 性xxxxx| 久久99久久99精品免观看麻豆 | 好看的亚洲视频 | 欧美美女free | 一级视频免费观看 | 欧美最猛性xxxxx亚洲精品 | 日本欧美一区二区三区片 | 中文字幕乱码中文乱码51精品 | 波多野结衣四虎精品影库 | 在线综合亚洲欧美网站天堂 | 日本特黄色大片 | 欧美国产综合视频 | 亚洲 图片 小说 欧美 另类 | 伊人色院成人蜜桃视频 | 亚洲 自拍 另类 制服在线 | 2019最新中文字幕 | 新japanesevideo乱熟|