1. 程式人生 > >2015秋季騰訊【技術運營】崗位———線上筆試總結

2015秋季騰訊【技術運營】崗位———線上筆試總結

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);
  		}
		
}