2015秋季騰訊【技術運營】崗位———線上筆試總結
阿新 • • 發佈:2019-01-01
1.SAS SATA SSD三種硬碟的讀寫效能排序?
SSD>SAS>SATA
(可參考http://www.cnblogs.com/ggjucheng/archive/2012/11/15/2771178.html)
2.是一道智力題,8種藥,一種有效,2小時見效,現在給2小時,問至少需要多少人可以搞定?
3個人足夠。A3,n排列即可。A3,0+A3,1+A3,2+A3,3=8種。
A3,0表示沒有有一種藥大家都沒吃,A3,1表示只有一個人只吃某一種藥。A3,2表示有兩個人都只吃某一種藥。
A3,3表示大家都只吃某一種藥。
其實就是3個人,每個人有兩種狀態,生和死。那麼總共有2^3=8中狀態,每一種狀態可以確定一瓶藥的藥性。
延伸,如果有18種藥,那麼至少需要多少人呢? 4人足矣。
3.給一個文字檔案file.txt,然後有多行資訊,每行資訊有姓名,電話(可重複),問重複最多的最後的行下標。(Tencent要求最好用shell程式設計)
package test; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Vector; public class test { public static void main(String[] args) { FileInputStream fis = null; InputStreamReader isr = null; BufferedReader br = null; //用於包裝InputStreamReader,提高處理效能。因為BufferedReader有緩衝的, //而InputStreamReader沒有。 try { String str = ""; StringBuilder str1=new StringBuilder(); fis = new FileInputStream("G:\\file.txt");// FileInputStream // 從檔案系統中的某個檔案中獲取位元組 isr = new InputStreamReader(fis); // InputStreamReader 是位元組流通向字元流的橋樑, br = new BufferedReader(isr); // 從字元輸入流中讀取檔案中的內容,封裝了一個new InputStreamReader的物件 ArrayList<Integer> aListCount=new ArrayList<Integer>();//將每一條記錄的重複次數放到陣列的對應位置 while((str = br.readLine()) != null) { // 當讀取的一行不為空時,把讀到的str的值賦給str1 aListCount.add(findSameCount(str1, str)); str1.append(str+ "\n"); } int i=indexOfMaxDuplicat(aListCount); System.out.println("重複最多的記錄的行是: 第"+(i+1)+"行");//因為陣列都是從0開始,所以為i+1 } catch (FileNotFoundException e) { System.out.println("找不到指定檔案"); } catch (IOException e) { System.out.println("讀取檔案失敗"); } finally { try { br.close(); isr.close(); fis.close(); // 關閉的時候最好按照先後順序關閉最後開的先關閉所以先關s,再關n,最後關m } catch (IOException e) { e.printStackTrace(); } } } public static int findSameCount(StringBuilder source,String target) { int total = 0; String sbTs=source.toString(); for (String tmp = sbTs; tmp != null&&tmp.length()>=target.length();){ if(tmp.indexOf(target) == 0){ total ++; } tmp = tmp.substring(1); } return total; } public static int indexOfMaxDuplicat(ArrayList<Integer> aList){ int max=aList.get(0); for(int i: aList){ if(i>max) max=i; } return aList.indexOf(max); } }