java基础面试题及编程题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Bubble1210/article/details/50688137

一程序题

1.判断101-200之间有多少个素数,并输出所有素数。(这道题校招笔试常考)

package day1;

public class Day1{ 
	public static void main(String []args){  
		int count=0;
		for(int i=101;i<200;i+=2){
			boolean b=false;{
			for(int j=2;j<=Math.sqrt(i);j++){
				if(i%j==0)
				{b=false;break;}
				else{b=true;}
				}
				if(b==true){
					count++;
					System.out.println(i);
					}
		}
		}
		System.out.println("101到200素数的个数为:"+count);
	}
    }
		

2.输入两个正整数m和n,求其最大公约数和最小公倍数。(校招笔试题考过)

package study;
import java.util.Scanner;

public class study {
	
	public static void main(String[] args) {
		int m,n,a,b;
		Scanner s = new Scanner(System.in);
		System.out.print( "键入两个数:");
		m = s.nextInt();   
		n = s.nextInt();
		a = gys(m,n);
		b = m*n / a;		
		System.out.println("最大公约数:"+a);
		System.out.println("最小公倍数:"+b);
	}	
		public static  int gys(int m,int n){
			while (true) {
				if ((m = m % n) == 0)
				return n;
				if ((n = n % m) == 0)
				return m;
		}	
	}
}

3.求1+2!+3!+...+20!的和

package day1;

public class Day1{ 
	public static void main(String []args){  
		long s,sum=0;
		for(long i=1;i<=20;i++){
			{s=1;
			for(long j=1;j<=i;j++){
				s*=j;
				}
			sum=sum+s;	
		}
		}
		System.out.print(sum);
	}
    }
		

4.利用递归方法求5!

package day1;

public class Day1{ 
	public static void main(String []args){  
		int x=5;
		int jc=Fac(x);
		System.out.println("5!="+jc);}
	public static int Fac(int x){
		if(x>1)
			return(x*Fac(x-1));
		else 
			return 1;			
	}	
    }
		

5.输入3个数a,b,c,按大小顺序输出。

package day4;

import java.util.Scanner;

public class day4 {

	public static void main(String[] args) {
		double a,b,c,t;
		Scanner s = new Scanner(System.in);
		System.out.print( "键入三个数:");
		a = s.nextDouble();   
		b = s.nextDouble();
		c = s.nextDouble();
		if(a<b){
			 t = a;a = b;b = t;			
		}
		if(a<c){
			 t = a;a = c;c = t;
		}
		if(b<c){
			 t = b;b = c;c = t;			
		}
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}

}



二概念以及知识点

1.java中垃圾回收有什么目的?什么时候进行垃圾回收?System.gc()和Runtime.gc()会做什么事情?

用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。

由JVM决定,在运行时是间歇执行的,JVM通常会感到内存紧缺时候去执行垃圾回收操作。

通知GC运行,但是,立即开始还是延迟进行垃圾回收是取决于JVM的。


2.Java堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?

JVM的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在JVM启动的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。
堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的,不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象。一直到垃圾收集器把这些对象回收掉之前,他们会一直占据堆内存空间。


3.在Java中,对象什么时候可以被垃圾回收?

当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了。


4.面向对象编程的特性

抽象性;继承性;封装性;多态性


5.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

ava虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

6.String是最基础的数据类型吗?

不是,string是引用数据类型


7.int和Integer有什么区别?

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。


8.&和&&的区别

1、短路与&&:条件1&&条件2,仅仅两个条件同时为真,结果为真,若1为假,则不判断2
2、与&:条件1&条件2,仅仅两个为真,结果为真,若1为假,则2还需判断

9.数组有length()这个方法吗?

数组没有length()这个方法,有length的属性


10.是否可以继承String类型?

string是final的,不可以继承

猜你喜欢

转载自blog.csdn.net/Bubble1210/article/details/50688137