京東商城面試
去得比較晚,沒相當宣講那麼快就結束了,然後又等試卷(試卷不夠)等了一段時間,最後大半都沒寫。
京東商城的筆試題真得很特別,沒有選擇,全部是填空,最後照例兩道程式設計題。
內容主要就是資料結構,還有大量的`概念題,這個.....反正我是寫不出來。
還有一個數據庫例項,寫一些增刪改查的SQL語句,沒什麼難度。
兩道邏輯題,悲催的不會,
一個是12個小球,其中一個重量不同,用天平稱三次,把它找出來;
一個是飛機加油問題,很老的問題,一個飛機可以飛半個地球,飛機間可以互相加油,求讓一個飛機飛整個地球最少要出動多少架飛機;
有興趣的同學可以想一下,當然網上已經有現成的答案了。
最後兩個程式設計題現在看起來不算太難,但當時就是寫不出來,可能我實在是不適應現場手寫程式碼吧,回來後很快就寫出來了,放出來給大家看看。
1.求一個數組裡面最大的K個數。
public class FindBigK {
public static void main(String[] args) {
int[] array=new int[]{1,5,-1,8,0,2}};//示例陣列
int k=3;//設K=3
int [] out=findK(array,k);
for(int i=0;i<out.length;i++){< p="">
System.out.println(out[i]);
}
}
static int[] findK(int[] array,int k){
int temp=0;
int charge=0;
int[] out=new int[k];
for(charge=0;charge<k;charge++){< p="">
int mark=charge;
int big=array[charge];
for(int i=charge+1;i<array.length;i++){< p="">
if(big<array[i]){< p="">
big=array[i];
mark=i;
}
}
temp=array[charge];
array[charge]=array[mark];
array[mark]=temp;
out[charge]=array[charge];
}
return out;
}
}
求得為8 5 2
2.求一個數組中相加的值最大的連續序列
public class FindBigArray {
public static void main(String[] args) {
int[] array=new int[]{-2,9,-3,4,-6,7,-6,4};//示例陣列
int sum=0;
int start=0;
int end=1;
int newstart=0;
int big=0;
for(int i=0;i<array.length;i++){< p="">
sum+=array[i];
if(sum<=0){
sum=0;
newstart=i+1;
}else{
if(sum>big){
big=sum;
start=newstart;
end=i+1;
}
}
}
for(int i=start;i<end;i++){< p="">
System.out.println(array[i]);
}
}
}
求得序列為 9 -3 4 -6 7