微信

使用微信服务,更方便

职友集>Java面试题 > 初级Java软件工程师笔试题及附带答案

初级Java软件工程师笔试题及附带答案

2015-08-07 06:30:01 阅读( 175 )

1840人 收藏本页

标签:Java面试题

1.结构化程序设计有哪三种流程?他们分别对应Java中那些语句。

结构化程序设计有三种基本流程:循环、分支和顺序。Java程序中的分支语句包含if语句、switch语句;循环语句包括了while语句,do-while语句、for语句;其他语句如变量、对象定义、赋值语句、方法调用语句、以及上面的循环结构、分支结构等按照上下文排列都是顺序语句。

 

2.在一个循环中使用break、continue和return有什么不同?

break用于跳出整个循环语句,在循环结构中一旦遇到break语句,不管循环条件如何,程序立即退出所在的循环体。

continue用于跳过本次循环中尚未执行的语句,但是仍然继续执行下一次循环中的语句。

在循环中使用return语句,将终止当前方法调用,同时终止循环,使流程返回到调用语句的下一个语句执行。

 

3.面代码将输出:________  

a=9;b=18;c=4;d=14;e=-14;f=-2

g=18.4;h=2.3999999999999986;i=5;j=3;k=5

 

public class test3{

public static void main(String args[]){

int a=5+4;

int b=a*2;

int c=b/4;

int d=b-c;

int e=-d;

int f=e%4;

double g=18.4;

double h=g%4;

int i=3;

int j=i++;

int k=++i;

System.out.println(“a=”+a+”;b=”+b+”;c=”+c+”;d=”+d+”;e=”+e+”;f=”+f); 

System.out.println(“g=”+g+”;h=”+h+”;i=”+i+”;j=”+j+”;k=”+k);

}

}

 

4.下面代码将输出:________

25<3=false

3!=0&&25/3>5=true

0!=0&&25/0>5=false

 

public class LogicTest{

public static void main(String args[]){

int a=25,b=3;

boolean d=a<b;       //d=false

System.out.println(a+”<“+b+”=”+d);//=;

int e=3;

d=(e!=0&&a/e>5);

System.out.println(e+”!=0&&”+a+”/”+e+”>5=”+d);

int f=0;

d=(f!=0&&a/f>5);

System.out.println(f+”!=0&&”+a+”/”+f+”>5=”+d);

}

}

 

5.编写程序,求两个整数的最大公约数。

import java.util.Scanner;

public class Gcd_Lcm{

public static void main(String args[]){

Scanner sc = new Scanner(System.in);

System.out.println(“输入2个数:以‘,’ 隔开“);

String []str = sc.next().split(“,”);

int m = Integer.parseInt(str[0]);

int n = Integer.parseInt(str[1]);

int min = m>n?n:m;

int max = m>n?m:n;

int num1 =1;

int num2 = max;

for (int i = min; i>0; i–) {

if (m%i==0&&n%i==0) {

num1 = i;break;

}

}

while (true) {

if (num2%m==0&&num2%n==0) {

break;

}

num2 = m*n>num2*2?num2*2:m*n;

}

System.out.println(“最大公约数:“+num1+” 最小公倍数:”+num2);

}

}

 

6.编写程序,打印出如下九九乘法表。

*   |  1   2   3   4   5   6   7   8   9

——-|——————————————————-

1   |  1

2   |  2   4

3   |  3   6  9

4   |  4   8  12  16

5   |  5  10  15  20  25

6   |  6  12  18  24  30  36

7   |  7  14  21  28  35  42  49

8   |  8  16  24  32  40  48  56  64

9   |  9  18  27  36  45  54  63  72  81

 

 

public class NineByNineMul{

public static void main(String args[]){

System.out.print(“ *     |”);

for(int i=1;i<=9;i++){

System.out.print(“ ”+i+”    ”);

}

System.out.println();

System.out.print(“——-|—–”);

for(int i=1;i<=9;i++){

System.out.print(“—–”);

}

System.out.println();

for(int i=1;i<=9;i++){

System.out.print(“ ”+i+”     | ”);

for(int j=1;j<=i;j++){

System.out.print(i*j+”    ”);

}

System.out.println();

}

}

}

 

 

7.下面代码将输出: one  two  default  

int i = 1;

switch (i) {

case 0: System.out.println(“zero”);

break;

case 1: System.out.println(“one”);

case 2: System.out.println(“two”);

default:System.out.println(“default”);

}

 

8.下面代码将输出:  Equal 

class EqualsTest {

public static void main(String[] args) {

char a=’\u0005′;

String s=a==0x0005L?“Equal”:”Not Equal”;

System.out.println(s);

}

}

 

9.编写程序,对A[]={30,1,-9,70,25}数组由小到大排序。

public class booktest {

public static void main(String[] args) {

int a[]={30,1,-9,70,25};

System.out.print(“数组原始顺序:“);

for (int i=0;i<a.length;i++) System.out.print(a[i] + ” ”);

for (int i = 0; i < a.length; i++) {

int lowerIndex = i;

for (int j = i + 1; j < a.length; j++)

if (a[j] < a[lowerIndex]) lowerIndex = j;

int temp = a[i];

a[i] = a[lowerIndex];

a[lowerIndex] = temp;

}

System.out.print(“\n数组排序后的顺序: “);

for (int i=0;i<a.length;i++) System.out.print(a[i] + ” ”);

}

}

 

10.运行下面代码将输出什么内容? one

int i=1;

switch(i){

case 0: System.out.println(“zero”);

break;

case 1:  System.out.println(“one”);

break;

case 2:  System.out.println(“two”);

break;

default:  System.out.println(“default”);

}

 

11.编写程序,求2-1000内的所有素数,并按每行5列的格式输出。

public class PrimeTest{

public static void main(String args[]) {

int num=2;

System.out.print(2 + ” ”);

for(int i=3;i<=1000;i+=2){

boolean f = true;

for (int j=2;j<i;j++) {

if(i % j == 0){

f= false;

break;

}

}

if(!f) {continue;}

System.out.print(i + ” ”);

if(num++%5 == 0)System.out.println();

}

}

}

 

12.编写程序,生成100个1~6之间的随机数,统计1~6每个数字出现的概率。

public class RandomTest {

public static void main(String[]args){

int[] randomnum=new int[100];

int[] n=new int[6];

double a;

for(int i=0;i<100;i++){

a = Math.random()*6;

a = Math.ceil(a);

randomnum[i] = new Double(a).intValue();

System.out.print(randomnum[i]);

switch  (randomnum[i]){

case 1: n[0]++; break;

case 2: n[1]++; break;

case 3: n[2]++; break;

case 4: n[3]++; break;

case 5: n[4]++; break;

case 6: n[5]++; break;

}

}

System.out.println();//以下可改为循环输出

System.out.println(“ 数字1出现的概率=”+(n[0]/100.0)*100+”%”);

System.out.println(“ 数字2出现的概率=”+(n[1]/100.0)*100+”%”); 

System.out.println(“ 数字3出现的概率=”+(n[2]/100.0)*100+”%”); 

System.out.println(“ 数字4出现的概率=”+(n[3]/100.0)*100+”%”); 

System.out.println(“ 数字5出现的概率=”+(n[4]/100.0)*100+”%”); 

System.out.println(“ 数字6出现的概率=”+(n[5]/100.0)*100+”%”); 

}

}

 

13.编写程序,求1!+2!+3!+…+15!。

public class FactorialSum {

static int f(int x) {

if (x<=0) return 1;

else

return x*f(x-1);

}

public static void main(String[]args){

int sum=0;

for(int j=1;j<=15;j++)

{

sum+=f(j);

}

System.out.println(sum);

}

}

 

14.编写程序,分别用do-while和for循环计算1+1/2!+1/3!+1/4!+…的前15项的和。

for循环代码:

public class For_FactorialSum {

static int f(int x) {

if (x<=0) return 1;

else

return x*f(x-1);

}

public static void main(String[]args){

double sum=0;

for(int j=1;j<=15;j++)

{

sum+=1.0/f(j);

}

System.out.println(sum);

}

}

 

do-while循环代码:

public class DoWhile_FactorialSum {

static int f(int x) {

if (x<=0) return 1;

else

return x*f(x-1);

}

public static void main(String[]args){

double sum=0;

int j=1;

do {

sum+=1.0/f(j);

j++;

}

while(j<=15);

System.out.println(sum);

}

}

 

15.编写一个程序,用选择法对数组a[]={20,10,55,40,30,70,60,80,90,100}进行从大到小的排序。

(分别采用冒泡排序、选择排序和插入排序方法)

public class SortAll {

public static void main(String[] args) {

int a[]={20,10,55,40,30,70,60,80,90,100};

System.out.println(“—-冒泡排序的结果:“);    

maoPao(a);

System.out.println();

System.out.println(“—-选择排序的结果:“);    

xuanZe(a);

System.out.println();

System.out.println(“—-插入排序的结果:“);    

chaRu(a);

}

// 冒泡排序    

public static void maoPao(int[] x) {

for (int i = 0; i < x.length; i++) {

for (int j = i + 1; j < x.length; j++) {

if (x[i] > x[j]) {

int temp = x[i];

x[i] = x[j];

x[j] = temp;

}

}

}

for (int i : x) {

System.out.print(i + ” ”);

}

}

// 选择排序    

public static void xuanZe(int[] x) {

for (int i = 0; i < x.length; i++) {

int lowerIndex = i;

// 找出最小的一个索引    

for (int j = i + 1; j < x.length; j++) {

if (x[j] < x[lowerIndex]) {

lowerIndex = j;

}

}

// 交换    

int temp = x[i];

x[i] = x[lowerIndex];

x[lowerIndex] = temp;

}

for (int i : x) {

System.out.print(i + ” ”);

}

}

// 插入排序    

public static void chaRu(int[] x) {

for (int i = 1; i 从1开始,因为第1个数已经是排好序的    

for (int j = i; j > 0; j–) {

if (x[j] < x[j - 1]) {

int temp = x[j];

x[j] = x[j - 1];

x[j - 1] = temp;

}

}

}

for (int i : x) {

System.out.print(i + ” ”);

}

}

}

 

16.编写程序,产生30个素数,按从小到大的顺序放入数组prime[]中。

public class PrimeArray {

public static void main(String args[]) {

int[] primearry=new int[30];

primearry[0]=2;

int num=1;

System.out.print(2 + ” ”);

for(int i=3;i<=1000;i+=2){

boolean f = true;

for (int j=2;j<i;j++) {

if(i % j == 0){

f= false;

break;

}

}

if(!f) {continue;}

primearry[num++]=i;

System.out.print(i + ” ”);

if(num%5 == 0)System.out.println();

if(num==30)break;

}

}

}

 

17. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。分别编写一个应用程序和小应用程序求 1000之内的所有完数。

 

public class Wanshu {

public static void main(String[] args) {

int sum=0,i,j;

for(i=1;i<=1000;i++)

{

for(j=1,sum=0;j<i;j++)

{

if(i%j==0)

sum=sum+j;

}

if(sum==i)

{

System.out.print (“完数:”+i+” ”+”其因子是:“ );

for(int k=1;k<=sum/2;k++)

{

if(sum%k==0)

System.out.print(“ ”+k);

}

System.out.println();

}

}

}

}

 

18. 从键盘读取若干个数,以“-1”结束,按从小到大的顺序排序。

import java.util.Scanner;

public class sc_num {

public static void main(String[] args) {

Scanner scanner=new Scanner(System.in);

int scnum=0,i=0;

int []scarry=new int[30];

System.out.println(“输入整数(-1结束):”);

while(scnum!=-1){

scarry[i]=scanner.nextInt();;

scnum=scarry[i];

i++;

}

xuanZe(scarry,i-1);

}

// 选择排序    

public static void xuanZe(int[] x,int n) {

for (int i = 0; i <n; i++) {

int lowerIndex = i;

for (int j = i + 1; j < n; j++) {

if (x[j] < x[lowerIndex]) {

lowerIndex = j;

}

}

int temp = x[i];

x[i] = x[lowerIndex];

x[lowerIndex] = temp;

}

for (int i=0;i<n;i++) {

System.out.print(x[i] + ” ”);

}

}

}

来自IT公司面试手册

下一篇:Java基础知识笔试题及答案

上一篇:应届毕业生Java笔试题及答案

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题