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