Java编程上机面试题(含详细答案)_第1页
Java编程上机面试题(含详细答案)_第2页
Java编程上机面试题(含详细答案)_第3页
Java编程上机面试题(含详细答案)_第4页
Java编程上机面试题(含详细答案)_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java编程上机面试题(含详细答案)本套试题为企业Java后端实习生/初级开发岗高频上机真题,全部为手写可运行代码,无冗余复杂逻辑,侧重基础功底、代码规范、逻辑思维,适合现场机试、线上笔试自测。所有代码可直接在JDK8及以上版本运行。一、基础语法编程题(3道)题目1:判断闰年需求:输入一个年份,判断该年份是否为闰年,控制台输出结果。闰年规则:能被4整除但不能被100整除,或者能被400整除的年份。参考答案代码java

importjava.util.Scanner;

publicclassLeapYear{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.print("请输入年份:");

intyear=sc.nextInt();

//闰年判断条件

booleanisLeap=(year%4==0&&year%100!=0)||(year%400==0);

if(isLeap){

System.out.println(year+"年是闰年");

}else{

System.out.println(year+"年不是闰年");

}

sc.close();

}

}答案解析1、核心逻辑严格遵循闰年判定标准,两个条件满足其一即为闰年;2、使用Scanner实现控制台输入,适配上机面试常规输入场景;3、代码简洁无冗余,判断逻辑清晰,是面试基础高频考题。题目2:求1-100之间所有偶数的和需求:通过循环计算1到100范围内所有偶数的累加和,输出最终结果。参考答案代码java

publicclassEvenSum{

publicstaticvoidmain(String[]args){

intsum=0;

//遍历1-100所有数字

for(inti=1;i<=100;i++){

//判断是否为偶数

if(i%2==0){

sum+=i;

}

}

System.out.println("1-100所有偶数和为:"+sum);

}

}答案解析最终结果为2550。采用for循环遍历+条件判断的常规写法,通俗易懂,面试官主要考察循环使用、累加变量初始化、取模运算基础能力。也可直接从2开始自增2,提升效率,两种写法均正确。题目3:实现数字反转需求:输入一个整数(正负均可),将数字反转输出,例如输入123,输出321;输入-123,输出-321。参考答案代码java

importjava.util.Scanner;

publicclassReverseNum{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.print("请输入一个整数:");

intnum=sc.nextInt();

intreverse=0;

while(num!=0){

//取最后一位数字

intlast=num%10;

reverse=reverse*10+last;

//去掉最后一位数字

num=num/10;

}

System.out.println("反转后的数字:"+reverse);

sc.close();

}

}答案解析核心思路:通过取模获取末尾数字,整除移除末尾数字,循环拼接反转后的数值。代码兼容正数、负数场景,无需额外判断正负,逻辑简洁高效,是上机面试经典算法基础题。二、字符串编程题(2道,面试高频)题目1:统计字符串中大写、小写字母、数字的个数需求:输入一串混合字符串,分别统计并输出大写字母、小写字母、数字的数量,忽略其他符号。参考答案代码java

importjava.util.Scanner;

publicclassStringCount{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.print("请输入字符串:");

Stringstr=sc.next();

intupper=0;

intlower=0;

intnumber=0;

//遍历字符串每个字符

for(inti=0;i<str.length();i++){

charch=str.charAt(i);

if(ch>='A'&&ch<='Z'){

upper++;

}elseif(ch>='a'&&ch<='z'){

lower++;

}elseif(ch>='0'&&ch<='9'){

number++;

}

}

System.out.println("大写字母个数:"+upper);

System.out.println("小写字母个数:"+lower);

System.out.println("数字个数:"+number);

sc.close();

}

}答案解析利用字符ASCII码范围判断字符类型,遍历字符串逐一枚举统计,是企业上机必考字符串基础题型。主要考察字符串遍历、char字符运算、条件判断能力。题目2:去除字符串中重复字符需求:输入一个字符串,去除重复字符,保留字符第一次出现的顺序,例如输入abcabc,输出abc。参考答案代码java

importjava.util.HashSet;

importjava.util.Scanner;

importjava.util.Set;

publicclassRemoveRepeatChar{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.print("请输入字符串:");

Stringstr=sc.next();

Stringresult="";

//利用Set集合去重特性

Set<Character>set=newHashSet<>();

for(inti=0;i<str.length();i++){

charch=str.charAt(i);

//集合中不存在则添加并拼接

if(!set.contains(ch)){

set.add(ch);

result+=ch;

}

}

System.out.println("去重后字符串:"+result);

sc.close();

}

}答案解析借助HashSet元素不可重复的特性实现去重,同时遍历顺序保留字符首次出现位置。该写法简单高效,符合面试编码规范,也可使用双重循环实现,适合基础薄弱的同学。三、数组编程题(2道,核心考点)题目1:求数组最大值、最小值、平均值需求:定义一个int数组,遍历数组,计算并输出数组的最大值、最小值、平均值(保留两位小数)。参考答案代码java

publicclassArrayInfo{

publicstaticvoidmain(String[]args){

int[]arr={12,45,7,89,23,56,3};

intmax=arr[0];

intmin=arr[0];

intsum=0;

for(intnum:arr){

if(num>max){

max=num;

}

if(num<min){

min=num;

}

sum+=num;

}

//计算平均值,保留两位小数

doubleavg=(double)sum/arr.length;

System.out.println("数组最大值:"+max);

System.out.println("数组最小值:"+min);

System.out.printf("数组平均值:%.2f",avg);

}

}答案解析采用增强for循环遍历数组,初始将最大最小值赋值为数组第一个元素,避免初始值0的bug。平均值计算需强制类型转换为double,避免整数除法丢失精度,printf格式化输出保留两位小数,贴合企业开发规范。题目2:数组冒泡排序(升序)需求:给定无序int数组,使用冒泡排序算法实现数组升序排序,输出排序前后的数组。参考答案代码java

publicclassBubbleSort{

publicstaticvoidmain(String[]args){

int[]arr={29,15,8,93,22,7};

System.out.println("排序前数组:");

printArr(arr);

//冒泡排序核心逻辑

for(inti=0;i<arr.length-1;i++){

for(intj=0;j<arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

//交换位置

inttemp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

System.out.println("\n排序后数组:");

printArr(arr);

}

//封装数组打印方法

publicstaticvoidprintArr(int[]arr){

for(intnum:arr){

System.out.print(num+"");

}

}

}答案解析冒泡排序核心:相邻元素两两对比,大数后移,每轮排序确定一个最大值。外层循环控制排序轮数,内层循环控制每轮比较次数。封装打印方法,代码复用性更高,是面试必考基础排序算法。四、集合编程题(1道,初级岗高频)题目:ArrayList存储学生成绩,求总分和平均分需求:使用ArrayList存储5名学生的考试成绩,遍历集合计算总分、平均分,输出结果。参考答案代码java

importjava.util.ArrayList;

publicclassScoreCount{

publicstaticvoidmain(String[]args){

ArrayList<Integer>scoreList=newArrayList<>();

//添加成绩

scoreList.add(85);

scoreList.add(92);

scoreList.add(78);

scoreList.add(90);

scoreList.add(88);

intsum=0;

for(Integerscore:scoreList){

sum+=score;

}

doubleavg=(double)sum/scoreList.size();

System.out.println("总成绩:"+sum);

System.out.printf("平均成绩:%.2f",avg);

}

}答案解析考察ArrayList基本使用:元素添加、集合遍历、获取集合长度。区分数组length属性和集合size()方法,是新手高频易错点。整体逻辑简单,主要考察集合基础操作能力。五、综合编程题(1道,压轴上机题)题目:实现猜数字游戏需求:程序随机生成1-100之间的整数,用户循环输入数字猜测,提示“大了”或“小了”,猜对后结束程序,统计猜测次数。参考答案代码java

importjava.util.Random;

importjava.util.Scanner;

publicclassGuessNumGame{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

Randomrandom=newRandom();

//生成1-100随机数

inttarget=random.nextInt(100)+1;

intcount=0;

while(true){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论