Java笔试编程题

递归

  • 斐波那契数列问题(第n个数=第n-1个数+第n-2个数) 有一列数有如下规律,1,1,2,3,5,8,13,21,34…,求第20位数是多少,要求使用递归实 现。
public class demo1{
	public static void main(String[] args){
		System.out.prinlnt(digui(20));
	}
	public static int digui(int val){
		if(val==1||val==2){
			return 1;
		}
		return digui(val-1)+digui(val-2);
	}
}
  • 阶乘问题 用递归的方式实现阶乘(n的阶乘是nn-1n-2*n-3…21)
public class demo2{
	public static void main(String[] args){
		System.out.println(jieChen(4));
	}
	public static void jieChen(int n){
		if(n==1){
			return 1;
		}
		return n*jieChen(n-1);
	}
}

设计模式

  • 单例模式 饿汉式
    一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。
public class Student{
	private static Student student =new Student();
	private Student(){}
	public static Student getInstance(){
		return student;
	}
}
  • 单例模式 懒汉式
public class Student (){
	private Student (){}
	private static Student student=null;
	public synchronized static Student getInstance(){
		if(student==null){
			return student=new Student();
		}
	}
}

开发:饿汉式 不会出问题 -》懒加载
面试:懒汉式 会出现线程安全问题 需要加synchronized

排序类问题

  • 有在面试中遇见排序的面试题,想办法套用冒泡排序即可,此类题目一般无法在短时间内完成,主要考察面试者是否具有排序基本思想或者手段,冒泡就可以了。
public class Demo3{
	public static void main(String[] args){
		int [] array ={44,33,22,11,55};
		for(int i=0;i<array.length-1;i++){
			for(int j=0; j<array.length-1-i;j++){
				if(array[j]>array[j+1]){
					int temp=array[j];
					array[j]=array[j+1]
					array[j+1]=temp;
				}
			}
			System.out.println(Arrays.toString(array));
		}
	}
}

查找类问题

  • 一般考察二分查找,速度快,其他查找方法想不到就写二分查找

二分查找思路:有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的 查找范围,直到匹配成功

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页