java经典面试题

一、经典面试题目: 一个有小写英文字符组成的字符串,统计其中每个字符数量

String str = "abcdesjkjsadfoiqwejhjkahjsiuhaskhka";
int[] counter = new int[26];
for(int i=0; i<str.length(); i++){
	  counter[str.charAt(i)-'a']++;
}
System.out.println(Arrays.toString(counter));

二、自增运算 ++

经典面试题目:

int n = 5;
for(int i = 0; i<5; i++){
    n = n++;
} 
System.out.println(n);//5

解析:

n = 5;
n = n++;
// 规则: ++ 的有限远远高于赋值运算=,++先计算
// 1. 计算++(后++): 
//     1. 先取出n的值5作为 n++ 表达式的值5
//     2. 将n的值增加1, n为6
// 2. 计算赋值 =, 将 n++ 的值5 赋值给n,n改变为5

三、将一个整数按照10进制进行拆分为个位数,如: 726633 拆分为 7、2、6、6、3、3

分析:

n = 726633
l = n%10; //3
n /= 10;  //72663
l = n%10; //3
n /= 10;  //7266
l = n%10; //6
n /= 10;  //726
l = n%10; //6
n /= 10;  //72
l = n%10; //2
n /= 10;  //7
l = n%10; //7
n /= 10;  //0

代码:

int n = 703383;
int[] digi=new int[10];
int i = digi.length-1;
do{
    int l = n%10;
    digi[i--]=l;
    n /= 10;
}while(n!=0);
int[] nums = new int[digi.length-1-i];
System.arraycopy(digi, i+1, nums, 0,  digi.length-1-i); 
System.out.println(Arrays.toString(nums));

结果:
在这里插入图片描述

四、打乱一个数组(洗牌算法)

int[] ary = {1,2,3,4,5,6,7,9};
for(int i=ary.length-1; i>0; i--){
  int j = (int)(Math.random()*i);
  int t = ary[i];
  ary[i] = ary[j];
  ary[j] = t;
}
System.out.println(Arrays.toString(ary));       
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值