京东广告部也是总共二面,两面给我的感觉完全不同;
一面,常规的自我介绍,项目经历介绍,写算法题:2道题,1)排列好的数组,二分查找,面试官说尽量考虑全情况 2) 一个固定的数组,[1,2,3,4,4,5,7],满足下面几个约束条件:a. 4不能位于第三位;b.5和7不能连续,给出全排列;第二道题主要的问题在于给定的数组有重复的元素,要记得在递归给出全排列时,排除重复计算!!
二面,二面的面试官倾向于基本知识吧!项目经历中spark的参数调优,spark或者hive实现取每个分组的top k的过程(假设表只有id, score两列,根据id来group);hive实现两个表的联合查询,表A是白名单,表B是全部的记录,计算出白名单对应的avg之类的统计值;
我的代码:hive代码 select A.id, avg(score) from (select id from A left outer join select id, score from B on A.id=B.id) C group by A.id
面试官:去掉子查询呢? 代码应该为 select avg(B.score) from A left outer join B on A.id = B.id group by A.id
接下来是基础知识拷问时间!崩溃~
1. new和malloc的区别(new是函数,malloc是关键字;new在创建新对象时会调用构造函数,malloc不会,所以new可以用来新建自定义的对象class);
2. 指针和引用的区别:指针是一个变量,存储一个地址,指向内存的一个存储单元;而引用跟原来的变量是同一个东西,是原变量的一个别名;
3. 浅拷贝和深拷贝的区别!要记得官方说法哦:在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存;
如果用自定义的类作为参数传入函数中,那么此时是浅拷贝还是深拷贝呢?此时是浅拷贝哦;
后面,是常规的机器学习算法的掌握之类的blabla~
PS:面试吸取的经验是,应该和面试官沟通好你要面试的岗位,大概因为没和面试官沟通清楚,二面的面试官按照大数据开发工程师面试的,我明明是一个算法宝宝呀!!!
另外,深度学习和强化学习,赶紧入坑啊!