Ⅰ java面試題:一個人早上八點上山,晚上八點到達山頂。第二天早上八點下山,晚上八點到達山底。
java面試題的解析方式(思路如下):
public static void main(String[] args) {
// TODO Auto-generated method stub
int up = 8;
int down = 8;
while(up<=20){
if((up == 20-6) &&(up == 20-6)){
System.out.println("在"+up+"時到達同一地點");
break;
}
up += 1;
down += 1;
}
}
微軟面試題的背後
微軟的奇葩面試題答案並不重要,重要的是思考過程,而思考過程體現了你是否擁有公司所看重的能力,不僅是微軟,其他公司的面試也是為了測試你的某種能力,如果你提前培養了這種能力,相當於知道了面試的「考綱」,在面試中自然就從容不迫,游刃有餘了。
平時要知道轉化能力是看透問題,然後找到解決方案的能力。所以轉化能力最重要的是如何看透問題,也就是你思考問題的方式。
Ⅱ 一個微軟公司的編程面試題
為了容易說明,我們先做些字元上的約定。設兩個數字分別為a和b。甲知道它們的和x = a + b,乙知道它們的積y = a * b。
首先,甲問乙:「你知道是那兩個數嗎?」乙說:「不知道」。這說明什麼呢?
乙是知道兩個數的積y的。如果這個數y分解為a和b的方式只有1種(比如34 = 2 * 17),那麼乙顯然就知道這兩個數是什麼了。因此,通過這句話,我們必須篩選出所有「有2種可能組合以上的y值」,我們稱之為R1,乙知道的數字y肯定在R1這個集合里。同時,「有2種可能組合以上的y值」對應的分解後的a和b可以組成一個集合S1:因為有些數字乘起來根本無法組成R1里的數字。這個集合S1就是兩個數字篩選一次後的結果。
然後乙又問甲:「你知道是那兩個數嗎?」甲說:「也不知道」。這又說明什麼呢?
注意這句話已經是第2句話了,根據理性假設,甲現在已經和我們一樣篩選出了集合S1。但是同樣的,他雖然知道兩個數的和x,但是在集合S1里卻仍然有兩種以上的組合可能性。我們可以篩選出「S1中有2種可能組合以上的x值」,稱之為R2。同時,利用R2中的x值,可以在S1中再篩選出分解後的a和b組成的新集合S2。這個集合S2是第2次篩選後的結果。
然後乙立刻說:「那我知道了」。
這說明,在集合S2中,乘積y只有一種分解方法。我們只要找到這種分解就可以了。當然,這樣做可能仍然有多個解,因為乙是知道y是幾的,但我們並不知道。我們稱這個y的集合(「S2中有1種可能組合的y值」)為R3,R3的可能分解為S3。
然後甲又說:「那我知道了」。
這說明,在集合S3中,他所知道的分解x = a + b也只有1種。這時計算得到的a和b就是我們所要的答案。
我寫的比較啰嗦,不知道你能不能看懂…… 你先看著,我稍後把程序貼上。
Ⅲ 微軟面試題:1——100000(十萬)之間的數字有多少個9(註:99是兩個9)Int整數,不包含帶小數點的。
輸出結果
1-100000之間,9出現的個數為50000
演算法思路:
(1)先將1-n 的整數全部轉化為 n 個字元串。
(2)統計每個字元串中,字元串"9"出現的個數;累計即可。