- 0
- 0
- 约5.86千字
- 约 18页
- 2026-03-23 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年阿里巴资深程序员面试题及答案
一、编程基础(3题,每题10分,共30分)
1.题目:
请用Java实现一个函数,输入一个正整数`n`,返回其二进制表示中`1`的个数。要求不使用内置函数。
答案:
java
publicstaticintcountOnes(intn){
intcount=0;
while(n!=0){
count+=n1;
n=1;
}
returncount;
}
解析:
-使用位运算`n1`判断最低位是否为1,然后右移一位继续统计。
-``是无符号右移,适用于Java中的整型。
-时间复杂度O(logn),空间复杂度O(1)。
2.题目:
请解释Java中的`volatile`关键字的作用,并说明它与`synchronized`的区别。
答案:
-`volatile`保证变量对所有线程的可见性,禁止指令重排序,但不保证原子性。
-适用于读多写少的场景。
-与`synchronized`的区别:
-`volatile`轻量级,只影响变量可见性;`synchronized`是重量级锁,涉及锁状态和线程阻塞。
-`volatile`不保证原子性,需要额外措施实现原子操作(如`AtomicInteger`);`synchronized`保证代码块原子
原创力文档

文档评论(0)