递归
- 斐波那契数列问题(第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));
}
}
}
查找类问题
- 一般考察二分查找,速度快,其他查找方法想不到就写二分查找
二分查找思路:有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的 查找范围,直到匹配成功