面试总结

来源:互联网 发布:Python爬取公众号 编辑:程序博客网 时间:2024/06/05 05:44

面试总结

今天第二次参加了好**的技术岗面试,这次面的是数据挖掘方面的职位,没有预先的笔试,但是面试官会事先拿一张白纸让写伪代码。面试要求上写着了解Hadoop及其生态圈产品等等,结果面试的时候都没有问到。

面试问题:
1. 估算一下一个一万行的文本文件有多大?有何估算依据。
2. 如何在这个文件中查找出重复项。
3. 如果这个文件大到比内存还要大(总之就是不能一次读取),应该如何查找出这个文件中的重复项。

面试官给的面试逻辑:
第一问中的答案是一万行的文本文件并不大,很小。
第二问中的答案就是。。因为文件不大,可以直接读进内存中进行查找。。。
第三问就是可以分块进行处理,但是分块的依据是利用哈希表进行分块,这样就可以保证块与块之间也不会有重复项。
三个问题是环环相扣的问题。

其中还问了我如何读取单链表中倒数第k个结点的内容,我答的是先读取长度,在取长度-k+1的结点的内容。后面又要求遍历一次,也就是用双指针,也就是第一个指针先走,当第一个指针走了k个结点过后,第二个指针先走,当第一个指针走完之后,第二个指针的位置则是倒数第k个结点的位置。

趣店面试经历

此处参加的面试岗位是数据分析,
一面是手写代码:
1.手写C++代码实现将字符串“123”转为(int)123。
2.写SQL语句查询
有一个表(table)有如下属性:money、id、date,需要查询出money累计最高的id号,如果有重复(累加money一样,则只取第一个。)
好几个SQL查询,其他记不清了。

二面:
针对数据分析方面,结合简介上的项目,进行考察。
比如我简历上有个美赛建模用到了主成分分析方法,针对主成分分析方法问得很深入,包括原理、核心、主成分分析中的主成分和原数据之间的旋转关系是什么等等。
还有数字图像处理的项目中用到了sober算子做模板卷积和canny算子边缘提取,问到了sober算子的八方向是什么意思,canny算子的原理,卷积的公式和实质,等等。

百度作业帮面试数据研发/分析岗位记录

面试岗位:数据分析/研发
职位要求:
网申要求

根据上一个公司的面试经验,这次我好好把SQL的查询都过了一遍,Hadoop的基本原理以及自己搭建的伪分布式的HDFS过了一遍,结果面试的时候一面一上来让我写了几个C++的程序:
1.复现strcpy的功能;
2.写函数实现冒泡排序的功能;
3.写函数判断一个整数数组中有没有x个连续的数(x是给定的整数);
其中连续可以是两种:如123,234,4567……这样的数(空间连续);
或者是{1,2,5,3……}中有1、2、3也算是连续的数;
(这个是面试官给我的解释,我还真没想过这样的连续数)
4.介绍极大极小搜索算法和Alpha-Beta剪枝法的区别
在解释Alpha-beta剪枝法的时候 ,我自己举了个例子把自己绕晕了,不过幸好后面反应过来了 - -!

然后第二个面试官来了,原本以为会是写写Sql啥的,毕竟准备了挺久还想大展手脚,结果又是写C++代码:
1.写冒泡排序的代码。。。。并计算其时间复杂度
2.美赛中干的是什么事,为什么要用主成分分析法?依据是什么?
3.有一个unsigned int M,一个unsigned int N,一个unsigned int P,一个unsigned int Q。如何将M分成N份,其中分为的每个数都必须在区间[P,Q]之内。
例如m = 7,n = 3,p = 0,q = 3;则是如何将7分解为3个数之和,
其中每个数都小大于等于0,小于等于3。例如7可以分解为(2,2,3)或者(1,3,3);其中还要去随机分解,即每次分解可能会出现不同的分解值。

小米C++/数据分析面试记录

首先提一下,面试我的人非常的好,是我最近参加的7 8 场面试中最好的面试官了,为人亲近,不懂的还会引导引导。头一次觉得有些东西没懂还挺对不起面试官的 哈哈

首先问了些基础问题:
1.虚函数(virtual)中在内存里面是存放在哪里?
:虚表在静态区,因为对每个类,所有对象都共用虚表。
虚表指针在对象内部,对象在哪它就在哪。三大区域都有可能。
本质上,C,C++内存分四大区域,其中代码区一般不存放数据
另有三大数据区:
堆区(也就是自由存储区,malloc,free new delete 用的就是这一区域)
栈区(自动变量,函数形式参数,函数返回地址等等 用的就是这一区域)
数据区(有时候称为静态区。
静态常量(优化不掉的),静态变量,外部变量等等在这一区域,还可以细分,但是没有必要区分这么细,那种划分,只是编译器实现时,采用的方案,最终汇总为这一区域。

2.基类中有一个虚函数,派生类中对该函数进行了重写,派生类的对象调用该函数时是如何找到重写的函数?
答:在定义了基类的指针与派生类的对象,或者是派生类指针与基类的对象。
在函数调用的时候,如果该函数在基类中被定义为虚函数,那么在调用的时候看该指针(包括基类指针和派生类指针)所指向的对象,如果是派生类的对象就调用派生类中重写的函数,如果是基类的对象就调用基类中的函数。如果该函数为非虚函数,那么看该指针的类型,如果是基类的指针就调用基类中的函数,如果是派生类的指针就调用派生类中的函数。这种情况是非多态的情况,函数没有实现重写,而只是进行了覆盖。

3.explicit关键字的作用:
explicit关键字的作用就是防止类构造函数的隐式自动转换.

explicit关键字只对有一个参数的类构造函数有效, 如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的, 所以explicit关键字也就无效了.

4.void f()const指的是类中函数f的this指针指向的内容是const类型的;
static void f();中的static指的是类中函数f没有this指针。

接下来是写了sql:
学生表student中有id、name、class、course、score几个属性,找出每个班级成绩前三的学生信息:
(这个当时我卡了一会- - 找出前三的时候一下子没反应过来)

select top 3 sdept,sage,snamefrom student group by sdept,sage,snameorder by sage DESC 

没记起来还有top 3 列名这种查询方法了- -
不过需要注意的是order by中的列要是group by 中支持的列

梦想旅行推荐系统工程师面试

面试职位:推荐系统工程师
面试结果:凉凉
要求
按照职责描述进行复习,将常用的推荐算法过了一遍,包括基于人口统计学的推荐方法、基于内容的推荐方法、基于关联规则的推荐方法和协同过滤推荐算法(基于物品和基于用户的推荐算法)。
其中更是研究了一篇北邮硕士论文《基于LBS的个性化推荐系统研究》,让我受益颇多。

不过面试先考了笔试,基本上就写了6个题目:
1.编写程序,实现一个死锁的过程。
答:死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,如果无外力它们都将无法推进下去。此时的系统处于死锁状态或称为系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

#include <iostream>#include <pthread.h>thread mutex; //定义一个全局互斥变量(锁)mutexvoid A(){    mutex.lock();    ...    B();    mutex.uclock();    return;}void B(){    mutex.lock();    ...    mutex.unlock();    return}

此时则会因为A、B函数中相互等待unlock而导致死锁。

thread mutex;void A(){    mutex.lock();    if(...)    {        return;    }    mutex.unlock();    return;}

此时则因为在if的函数体内直接return,而没有调用unlock,导致另一个线程在调用A方法时就出现死锁。

2.给了一个中序二叉树遍历,后续二叉树遍历,求其前序遍历。
3.有两个有小到大排列好的int数组,把它们合并为一个由大到小的数组。
4.忘记了。
5.创建MySQL数据库:创建学生表、课程表和得分表,并写SQL。
6.一个1T大小的文件,如何找到其中出现次数最多的文件。
7.逆序单链表。

美团酒旅事业部面试

面试岗位:数据分析师(更倾向于业务方面)
面试结果:等待

1.简单sql语句的检查。
例如如何筛选出销售额前五的公司。
答: 直接使用select top 5 - -!(汗颜)

2.了解美团吗?美团是一个什么样的公司?什么是o2o模式?和一般的电商有什么区别?
答:美团是一个o2o公司,所谓o2o指的就是“online to offline”,其核心商业模式就是把线上的消费者带到现实的商店中去,在线支付购买线下的商品和服务,再到线下去享受服务
姑且认为传统电子商务理解为以淘宝为首的电子商务。
(1)、基于应用场景和理念o2o受地域范围限制,例如到一个地方吃一顿饭,不可能在南京下单子跑到北京。传统电子商务在北京下订单,哪里都可以到。
(2) 基础不同。传统电子商务以pc为基础,o2o更倾向于移动互联网。
(3) 服务领域不一样。传统电子商务依托快递服务于服装,以及其他生活用品,o2o则主要倾向于本地生活化。

3.假如某天突然发现公司的营业额有所下降,试分析其中原因。
答:首先因为o2o的营销模式中,线上互联网部分的移动终端+地理位置LBS+支付是一个实时的过程,所以突然的营业额下降会不会是因为某些突发事件,例如对于酒旅事业部来说,旅行本是一大重要支柱,尤其是对于年轻人来说一些周末短途的周边游服务,但是一旦出现较为极端的天气(大雨、大风)等等,则会导致今天营业额可能会出现下降。

然后是有可能是市场上同类产品(竞品)是不是推出了新产品或者有什么新的变化,导致本来应该属于自己的客户被竞品吸引走了,进而导致今天的营业额数据的下降。

量化派面试

面试岗位:算法
面试结果:等待(备胎)

问题1:手写程序。一个二维数组,如何按照图中顺序输出结果。
(也就是按照右斜下角输出)
这里写图片描述

void func(int *a,int m,int n){    for(int i=0;i<m;i++)    {        for(int j=0;j<=i;j++)        {            j=j*m+i-j;            cout<<a[j]<<endl;        }    }    for(int i=n-1;i>0;i--) // 此时的i相当于原来倒序的j    {        for(int j=n-i;j<n;j++)        {            j=j*m+(n-1)-j+(n-i);            cout<<a[j]<<endl;        }    }}

2.有一个文件,存的有(有相同)不同的字符串,如何统计各字符串的出现的次数?

新浪总部C++开发面试

1.根据动物园里面的动物,写几个类。
很多关于面向对象的内容,最好这部分东西熟悉,包括纯虚函数—如何计算动物园中动物数量(每new一个实例则动物数量+1)等等
答:有一个基类:动物,有一些共有属性:身高、体重,共同的方法:吃东西,
每一种动物都是一个子类,如鸟,继承自基类动物,然后有自己的私有方法:飞。

2.手写代码:实现strcmp功能。
其中如果字符串A与字符串B全部相等,则return 0;如果A有一个字符大于B的字符,则认为A>B,返回1;否则返回-1;

3、手写代码:实现分割字符串的功能。
例如char* str={“I am a boy.”}
则需要输出:
I
am
a
boy

iHandyC++游戏开发面试

先写了一套笔试题:
1、new和malloc的区别
2.virtual constructor和virtual destructor的区别
3.宏和内联函数的区别
4.如何判断float和double是否相等
5.printf(“%x”,-1<<4)有什么错误
6.static int i=5;
printf(“%d”.i–);输出是什么
7.一个自定义的strabc函数,有一大堆英文介绍,根据英文文档写出这个函数的实现机制,然后一个这个函数的调用代码,最后输出了什么,最后如何保证这个函数的线程安全。
8.手写代码:将一个int型数字转换成对应字符串
9.手写代码:输出字符串A和字符串B的最大公共子串。

面试:
还是一个面向对象的基础,图书馆的场景,如何抽象出类:
答:有一个图书类,里面有各种书本的信息
有一个图书馆类,里面存放了各个书本的信息,其中用map容器进行保存。
等等

2.手写逆序单链表的代码。