58一面面试题总结

这篇博客总结了58集团面试中的关键问题,涉及机器学习算法如Xgboost、GBDT及其与决策树(ID3、C4.5、CART)的关系和过拟合解决方案。此外,还讨论了SVM在多分类问题中的应用及代码实现,包括快速排序和字符串转数字的异常处理技巧。

(1)Xgboost与GBDT的区别?

(2)讲一下GBDT算法?

(3)决策树中ID3、C4.5、CART算法一个一个讲解?

(4)ID3、C4.5、CART算法区别和联系?

(5)决策树是如何解决过拟合问题的?

(6)SVM如何解决过拟合问题?

(7)SVM如何做到多分类的?

(8)快速排序手写代码?

package interview;

public class interview_quicksort58 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] array = {9,5,8,4,7};
		Sort(array, 0, array.length-1);
		for(int i=0; i<array.length; i++) {
			System.out.print(array[i] +" ");
		}
	}

	public static void Sort(int[] array, int low, int hight) {
		if(low >= hight) {
			return;
		}
		int index = partition(array, low, hight);
		Sort(array, low, index-1);
		Sort(array, index+1, hight);
	}
	
	public static int partition(int[] array, int low, int hight) {
		int key = array[low];
		while (low < hight) {
			
			while (low < hight && array[hight] > key)
				hight--;
			array[low] = array[hight];
			
			while (low < hight && array[low] < key)
				low++;
			array[hight] = array[low];
		}
		array[hight] = key;
		
		return hight;	
	}

}

(9)字符串转数字,比如“123”变成123,或转“123Microstrong”变成“123”。注意异常的处理。

第一次写出代码:

package interview;

public class interview_stringToint {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num = convertTonum("123");
		System.out.print(num);
	}
	
	public static int convertTonum (String val){  
		
        int return_val = 0 ;  
        char[] char_arr = val.toCharArray();  
      
        for (int i = 0; i <char_arr.length; i++) {  
            char c = char_arr[i];     
            int  val_v = (int)Math.pow(10, char_arr.length-(i+1));   
            return_val =  return_val + (c-48) *val_v;  
        }  
        return return_val;  
        } 
}

代码提交之后,面试官看完,又给我打过来电话,说字符串转数字这个,是让我注意一下异常处理,比如说空、空格等。

第二次写代码:

package interview;

import java.util.Scanner;

public class interview_stringToint {

	public static void main(String[] args) {
		// TODO Auto-generated method stub		
//		String inputStr = "1Z2Y3Q4";
		Scanner scanner = new Scanner(System.in);
		String inputStr = scanner.nextLine();
		
		if(inputStr == null || inputStr.length() == 0) {
			System.out.println("请输入数据!");
		}else {
			String[] arrayStr = inputStr.split("[^\\d]+");
		    String str="";
		    for(int i=0; i<arrayStr.length; i++) {
		    	str+=arrayStr[i];
		    } 
		    int num = convertTonum(str);
			System.out.print(num);
		}
		
	}
	
	public static int convertTonum (String val){  
		
        int return_val = 0 ;  
        char[] char_arr = val.toCharArray();  
      
        for (int i = 0; i <char_arr.length; i++) {  
            char c = char_arr[i];     
            int  val_v = (int)Math.pow(10, char_arr.length-(i+1));   
            return_val =  return_val + (c-48) *val_v;  
        }  
        return return_val;  
    } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值