num面試
『壹』 JAVA面試題解惑系列(五)——傳了值還是傳了引用
// 改變方法參數的值 public void add(int i) { i += 10; } // 改變方法參數屬性的值 public void add(ParamTest pt) { pt.num += 20; } public static void main(String[] args) { ParamTest t = new ParamTest(); // 為基內本類型參數重新容賦值 t.change(t.num); System.out.println(t.num); // 為引用型參數重新賦值 t.change(t); System.out.println(t.num); // 改變基本類型參數的值 t.add(t.num); System.out.println(t.num); // 改變引用類型參數所指向對象的屬性值 t.add(t); System.out.println(t.num); } } 這段代碼的運行結果如下: 0 0 0 20
『貳』 在面試前端開發的時候遇到一個面試題,求解 var a =10; (function(){ console.log(a); var a=100; })
vara=10;
(function(){
console.log(a);
vara=100;
})();
結果:輸出undefined
解釋:
function中有var a = 100;
聲明會提升到function最開頭,但賦值發生在最後。
上面的代碼專等價於:
vara=10;
(function(){
vara;
console.log(a);
a=100;
})();
列印屬a的時候,a並沒有在function內賦值,所以是undefined
『叄』 一道微軟面試題,計算1-400億有多少個1用JAVA做.
//package com.color.program;
public class CountOne {
private static long count1(Long n) {
long count = 0;
String num = n+"";
Long x = (long)Math.pow(10, num.length()-1);
for(int i=0; i<num.length(); i++) {
count += Long.parseLong("0"+num.substring(0, i))*x;
if(num.charAt(i)>'1') {
count += x;
}else if(num.charAt(i)=='1') {
count += Long.parseLong("0"+num.substring(i+1))+1;
}
x /= 10;
}
return count;
}
public static void main(String[] args){
System.out.println(CountOne.count1(new Long("101")));
}
}