2019 猿辅导 深度学习算法工程师 提前批笔试题

it2024-08-20  57

选择题 共计5题

还记得4题,具体的题目记不清楚了,大致考察的东西还记得:

第一题:求矩阵的特征值 λ \lambda λ ( 0.7 0.4 0.3 0.6 ) \left (\begin{matrix} 0.7 & 0.4 \\ 0.3 & 0.6 \end{matrix} \right ) (0.70.30.40.6)`

第二题:在岭回归中,正则化系数 λ \lambda λ的越大,此时方差和偏差的变化如何:

岭回归即L2正则

一方面,由于添加了正则项,模型不仅仅考虑经验风险还考虑模型复杂度对模型的影响,所以模型的更不容易过拟合。因此模型的方差变小。 此时,结构风险 = 经验风险 + 正则项 正则项系数 λ \lambda λ越大,模型权重 ω 2 \omega^2 ω2的就会小。简单理解可以理解为模型变的更加简单,拟合能力变差,故模型的偏差变大。

第三题:A,B两人准备去公司面试,A约定在9:30-10:00到达公司,B约定在9:45-10:00到达公司,求A在B之前到达公司的概率。

此题应用线性规划解决: 由图可知,在A<B的情况下,所占面积是整体面积的3/4。所以 P = 3 / 4 P = 3/4 P=3/4

第四题:在给定的条件下,计算满足一下条件的4位数有多少个?

是奇数不包含4和9每一位各不相同

错误 : sum = ( 7 - 3 ) * (8 - 2) * (8 - 1) * 4 = 4 * 6 * 7 * 4 = 672 因为逆序考虑的时候再第三位和第二位的时候可能用了0,那么这个时候就不需要讨论在第一位的时候是否出现0了,不如先考虑第一位的概率,这样就不用讨论第二位和第三位是否出现了0的情况。 讨论:

如果在第二位、第三位没有出现0: 456*4 = 480如果第二位或者第三位出现了0:2*5*6*1*4 = 240共计720

考虑从第一位考虑的话可以避免讨论的情况: 改正: sum= 6*6*5*4 = 720

编程题第一题:

有一个数据压缩算法:

A3 = AAA A02 = AA A11 = AAAAAAAAAAA A(BC)2 = ABCBC

如示例所示:要求接受N个长度不定的字符串,其中可能包括括号的多层嵌套,最后按其顺序解压输出。

package Interview; import java.util.ArrayList; import java.util.Scanner; public class Main { public static ArrayList<Integer> index = null; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String[] strs = new String[n]; int i = 0; while(i<n){ strs[i++] = sc.next(); } for(String str:strs){ index = new ArrayList<Integer>(); int cnt = 0; System.out.println(parse(str,cnt)); } } public static String parse(String str,int cnt){ int m = str.length(); for(int i = 0;i<str.length();i++){ if(str.charAt(i) == '('){ index.add(i); }else if( str.charAt(i) == ')'){ cnt ++; int pos = index.get(index.size()-1); index.remove(index.size()-1); String _str = str.substring(pos+1,i); String prfix = str.substring(0, pos); int num = 1; if( str.charAt(i+1) >= '0' && str.charAt(i+1) <= '9'){ int k = 0; while(i+k+1<str.length()&&str.charAt(i+k+1) >= '0' && str.charAt(i+k+1) <= '9'){ k++; } String strnum = str.substring(i+1, i+1+k); int p = 0; while(p<strnum.length() && strnum.charAt(p) == '0'){ p++; } strnum = strnum.substring(p); num = Integer.valueOf(strnum); i = i+k; } String tmp = ""; String px = ps2(_str); for( int j = 0;j<num;j++){ tmp +=px; } String end = str.substring(i+1); str = prfix + tmp + end; } } return ps2(str); } public static String ps2(String str){ int m = str.length(); StringBuffer sb = new StringBuffer(); String pif = ""; for(int i = 0;i<m-1;i++){ if(str.charAt(i+1) >= '0' && str.charAt(i+1) <= '9'){ int k = 0; while(i+k+1<m&&str.charAt(i+k+1) >= '0' && str.charAt(i+k+1) <= '9'){ k++; } String strnum = str.substring(i+1, i+1+k); int p = 0; while(strnum.charAt(p) == '0'){ p++; } strnum = strnum.substring(p); int num = Integer.valueOf(strnum); for( int j = 0;j<num;j++){ sb.append(str.charAt(i)); } i = i+k; }else { sb.append(str.charAt(i)); } } if(!(str.charAt(str.length()-1) >= '0' && str.charAt(str.length()-1) <='9')){ sb.append(str.charAt(str.length()-1)); } return sb.toString(); } }

测试结果如下:

剩下的题还没来得及看。。

还是太弱鸡,程序本身并不难,却花了很长时间才调试出。

最新回复(0)