富途一般都是宣讲会后直接写笔试卷,研发岗的都需要现场笔试,共分三套卷子,数据类,后台类和前端类。
笔者写的是数据类的卷子,做完出来就感觉凉凉,还是记录下印象深刻的一些题(shi)目(wu),算是对自己的一个提醒和反思。
卷子有五种题型,选择、填空、简答、数据库以及编程题。选择题和填空题考察一些基本的数理逻辑知识,涉及方差计算,排列组合,数列规律等,简答题有两个小题,第一题问l1_norm 和l2_norm的功能,第二题问mini_batch过大或过小的后果。数据库主要涉及select语句,嵌套查询等,最后的编程题是旋转数组求最小值,要求尽可能小的时间负责度,所以选择了二分思想解答。
虽然题目答得不好,还是记录下当时或是后来查询获得的一些答案。
1.l1_norm和l2_norm的作用
l1_norm 是权重向量w各个元素绝对值之和,作用是产生稀疏模型,用于特征选择;
l2_norm 是权重向量w各个元素平方和求方根,作用是选择简单模型(参数越小模型越简单),防止过拟合。
2.mini_batch过大或过小的后果
mini_batch过大:单次迭代训练集过大,耗时太长
mini_batch过小:效率过低
如果总训练集较小(如n_sample<2000),直接选择batch gradient descent。
如果总训练集较大,则mini_batch的选择最好与CPU/GPU内存相匹配,一般选择64,128,256,512等。
3.旋转数组求最小值
旋转数组其实是由两个递增序列,寻找最小值,就是寻找两个递增序列交界处,第二个递增序列的首个元素。每次取中间的元素,如果该元素落在第一个递增序列之间,则往后找最小值;如果该元素落在第二个递增序列,则往前找最小值;直到找到两个序列的交界处,返回最小值。