最近找工做,一些面试经历(持续更新)

一.阿里巴巴电面

1.C++与Java的区别,java内存怎么回收
C++有指针,Java没指针,C++内存须要手动删除,java内存自动回收
2.声明一个变量和定义一个变量的区别
声明一个变量不占用内存,定义一个变量须要分配内存
3.new与malloc的区别
new/delete是C++关键字,须要编译器支持。malloc/free是库函数,须要头文件支持。
new操做符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操做符。而malloc内存分配成功则是返回void * ,须要经过强制类型转换将void*指针转换成咱们须要的类型。

二.亚信科技面试

new内存分配失败时,会抛出bac_alloc异常。malloc分配内存失败时返回NULL
new操做符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操做符的一个抽象概念,凡是经过new操做符进行内存申请,该内存即为自由存储区。而堆是操做系统中的术语,是操做系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存
4.友元函数的特性
友元是一种定义在类外部的普通函数,但它须要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,可是它能够访问类中的私有成员。友元的做用在于提升程序的运行效率(即减小了类型检查和安全性检查等都须要的时间开销),可是,它破坏了类的封装性和隐藏性,使得非成员函数能够访问类的私有成员。

三.杭州智贝

去这家公司面试,整体感受还不错,面试官是个中年花白头发的大叔,不过实力很强,不玩基础,不玩手撕代码,纯考验数学逻辑思惟。
1.   若是 9个球,某个球偏重,给出一个天平,那么称几回能够区分异常球。
一开始我使用二分法(4,4,1),那么至少须要3次区分,以后通过面试管提醒,使用三分法(3,3,3),那么只须要两次就OK搞定。
2.   若是球数增长至27个,81个,那么就是相似于递归的问题,三分法解决,分别是3次,4次。
3.   若是球数为26个时候,那么能够分解为(9,9,8)
4.   若是两个天平,25个球,能够用5分法(5,5,5,5,5)....
5.   若是存在5个球,分别编号1~5,1号球为标准球,其余四个球中存在一个异常球(或重或轻),给出一个天平,至少须要称量几回,才能肯定哪一个球为异常球,同时异常球偏轻仍是偏重。
这个问题蛮有意思的,次数至少为2次
第一次天平左边放1和2,天平右边放3和4,若平衡,则异常球为5号球,再将1号球和5号球称重,对比重量显示偏轻仍是重。
若第一次称量不平衡,那么肯定5为标准球,
第二次称量1和5放在天平左边,2和3放天平右边,若平衡,则异常球为4,且2,3为标准球,第一次称量能够约去公约数2,3,则对比1,4的结果,若不平衡,则肯定4为标准球,在第一次称量中约去公约数1,4,则对比2,3的结果。

四.杭州光珀

首先谈一下此次的面试感觉,该公司离我学校有点远,在浙大紫金港校区那边,我历经约两个小时路程,先见到的是给我打电话的HR小姐姐,看了一下个人简历,跟我谈了一下之后的人生规划,而后介绍了下光珀公司。以后就是面试了,来了一个面试官,面试过程当中又陆续来了几个面试官的同事,而后就是三对一的面试....不过整体感受这些面试官之间关系很好,同时面试过程也十分愉快,废话很少说,记录面试题目
1.  ROS的一项工程,若运行时发现奔溃,如何产看是那个节点出问题
输入rosnode list能够查看哪些节点正在运行,看节点中哪一个节点未运行。
2.  如何查看ROS节点内参数变化
可使用命令行rosparam list来查看节点中有哪些参数,可使用rosparam set设置参数,rosparam get 返货参数值等
3.  rqt有哪些
rqt_graph显示节点之间的关系
rqt_plot显示数据流
rqt_gui用于调试
rqt_console用于现实节点输出
4.  ROS运行时用到Linux哪些内核
Linux内核是操做系统的核心,分进程管理,储存管理,文件管理,设备管理和网络管理

4.  摄像头标定的参数输出的意义
有一个参数矩阵(fx,fy,u0,v0)和一个畸变系数(三个径向k1,k2,k3;两个切向p1,p2);内部参数是惟一的,就是一部相机只有一组内部参数,fx=F*Sx,其中的F就是焦距上面的f,Sx是像素/没毫米即上面的dx,dx和dy表示:x方向和y方向的一个像素分别占多少长度单位,即一个像素表明的实际物理值的大小,其是实现图像物理坐标系与像素坐标系转换的关键。u0,v0表示图像的中心像素坐标和图像原点像素坐标之间相差的横向和纵向像素数。
三个轴的旋转参数分别为(ω、δ、 θ),T的三个轴的平移参数(Tx、Ty、Tz),k1,k2,k3径向畸变系数,p1,p2是切向畸变系数,畸变系数实际上是相机二阶泰勒展开近似。

五.Nokia上海贝尔研究所杭州分公司

首先进行了笔试,笔试题为诺西2009年笔试题,答案网上都有,以后就是进行了相应的面试。
面试首先自我进行介绍,自我介绍主要讲了学习,项目经历,还有社会工做等,以后面试管让我挑一个本身特别重视的项目,详细讲一下,balaba一堆,而后用英语介绍下家里人的状况,期间讲到大华软件精英挑战赛,面试官比较感兴趣,以后再是讲述了正在作的海康威视软件精英挑战赛

其中关于C++的提到的问题有
1.虚函数怎么实现多态
多态的做用:继承是子类使用父类的方法,而多态则是父类使用子类的方法
例子
class A {

public:

A() {}

  (virtual) void print() {

cout << "This is A." << endl;

}

};

class B : public A {

public:

B() {}

void print() {

cout << "This is B." << endl;

}

};

int main(int argc, char* argv[]) {

    B b;

A a;  a = b;a.print;
return 0;

}

那么这里输出的是This is B,若是把virtual去掉,那么输出This is A,加上virtual ,多态了,B中的print被调用了,也就是能够实现父类使用子类的方法。html

多态性使得可以利用同一类(基类)类型的指针来引用不一样类的对象,以及根据所引用对象的不一样,以不一样的方式执行相同的操做。把不一样的子类对象都看成父类来看,能够屏蔽不一样子类对象之间的差别,写出通用的代码,作出通用的编程,以适应需求的不断变化。赋值以后,父对象就能够根据当前赋值给它的子对象的特性以不一样的方式运做(也就是能够调用子对象中对父对象的相关函数的改进方法)。前端

当编译器遇到virtual后,会为所在的类构造一个表和一个指针,那个表叫作vtbl,每一个类都有本身的vtbl,vtbl的做用就是保存本身类中虚函数的地址,咱们能够把vtbl形象地当作一个数组,这个数组的每一个元素存放的就是虚函数的地址.指针叫作vptr,指向那个表。而这个指针保存在相应的对象当中,也就是说只有建立了对象之后才能找到相应虚函数的地址。
java

注意node

(1)为确保运行时的多态定义的基类与派生类的虚函数不只函数名要相同,其返回值及参数都必须相同,不然即便加上了virtual,系统也不进行迟后联编。面试

(2) 虚函数关系经过继承关系自动传递给基类中同名的函数,也就是上例中若是A中print有virtual,那么 B中的print即便不加virtual,也被自动认为是虚函数。编程

(3) 没有继承关系,多态机制没有意义,继承必须是公有继承数组

(4)现实中,远不仅我举的这两个例子,可是大的原则都是我前面说到的若是发现一个函数须要在派生类里有不一样的表现,那么它就应该是虚的。这句话也能够反过来讲:若是你发现基类提供了虚函数,那么你最好override安全

2.代码的鲁棒性服务器

我当时回答了鲁棒性至关于代码的健壮性,可是以后扯到了扩展性,有点失策...网络

健壮性是指对于规范要求之外的输入可以判断出这个输入不符合规范要求,并能有合理的处理方式。健壮性就是鲁棒性,是指一个程序中对可能致使程序崩溃的各类状况都充分考虑到,而且做相应的处理,在程序遇到异常状况时还能正常工做,而不至于死机。

3.C与C++的区别

第一点就应该想到C是面向过程的语言,而C++是面向对象的语言,通常简历上第一条都是熟悉C/C++基本语法,了解C++面向对象思想,面向对象的三大特性:封装、继承、多态

第二点C和C++动态管理内存的方法不同,C是使用malloc/free函数,而C++除此以外还有new/delete关键字;

malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符,对于用户自定义的对象而言,用maloc/free没法知足动态管理对象的要求。对象在建立的同时要自动执行构造函数,对象在消亡以前要自动执行析构函数

第三点C++的类是C所没有的,可是C中的struct是能够在C++中正常使用的

第四点C++支持函数重载,而C不支持函数重载

第五点C++中有引用,而C没有;这样就不得不提一下引用和指针的区别

指针是一个实体他在栈中有本身使用的空间,可是引用没有

引用必须初始化,指针不用可是最好初始化

引用只能初始化一次是个专注的人,指针不是

指针和地址运用自增(++)不一样,引用是值进行自增,而指针是地址进行自增  

六.杭州边锋网络游戏科技有限公司

面试是下午一点半开始,进去先填写一个表格和作一份C++研发工程师题,题目都很基础,随意写了一下,题目中比较有新意的是有关于C++11的auto 以及lambda函数,还有就是关于斗地主中三个玩家和服务器之间的发牌、叫分、打牌的补充逻辑示意图,以后就是最后一道最喜欢哪一种类型的游戏以及相应的理由。

技术面,面个人直接就是杭电毕业的学长,面试过程当中发现也一样是老乡,感受十分有缘,一开始就是自我介绍,我分别从学习上,科研竞赛上(本人读研期间作的事情真的挺多的,因此balabala了很久,可是面试官并无不耐烦),还有就是社会工做上来分点介绍本身(真的,思路要清晰,有条理,以后面试官也赞赏我能分点介绍),接着面试官提问关于项目中遇到的困难,怎么去解决,有哪些体现你的学习能力,我直接从我小白身份作过的项目里去介绍这几点,说完面试官很满意,全程笑脸,以后问我看技术书是怎么看的,我说不会从头看到尾,我会先看目录,找到本身项目中相关的信息,而后去作,以后看例子,有个类似的模板就嵌套进去,遇到不懂的再查,面试官也笑了笑,最后面试官就聊了聊该岗位具体要作什么,和我想的差很少,同时也须要作一些前端的事情,以后面试官商量了一下实习时间等,他就去找HR,说若是HR面过了就来实习

HR面,面个人是HR小姐姐,挺有意思的,也问了我项目,一样的回答,HR表示我思路很清晰,以后问了我人生规划以及是否留在杭州,本人表示愿意,而后就是问实习时间还有实习薪资,顿时内心有底了,毕竟并不是科班出身,以及本身提了几个问题,关于上班时间,公司规模,具体事物等,HR都一一回答了,聊的也很愉快。

总的来讲一次不错的面试经历。


七.浙江大华股份有限公司

网上笔试结束后,大概过来一星期通知去面试,那天下大雨,路上一个多小时的时间...还把雨伞弄丢了..好气

首先是基础面

1.先介绍本身学习方面(我说了一些本身的奖学金)

2.聊一聊项目经历,其中我说明了本身的SCI论文如何发表,在项目中本身作的事情,面试官答题了解了我作的事和在项目中的做用。

3.是否了解TCP/IP,不了解...

4.多线程,回答thread_create来建立多线程,VS上能够用opm.h头文件来进行多线程

以后技术面

1.自我介绍(我分三个方面:学习,科研和项目,社会工做)

2.迭代与递归的区别,递归会消耗更多内存和时间,迭代则不会

3.如何判断链表中是否有环,能够设置两个快慢指针,快指针向前走两步,慢指针向前走一步,若是两个指针相遇,那么该链表中存在环(追击问题)

4.多线程编写,线程切换

用thread_creat建立多线程,sleep用于线程睡眠,SwitchToThread用于线程切换。

5.是否会快速排序,快速排序的思想,可否将快排的递归转换成迭代

快排采用分治法,分而治之,递归转迭代并不会...

6.字符串中找子串如何实现

strstr()函数,我回答使用动态规划,寻找子结构。

7.用过哪些IDE

code::block,eclipse,VS

8.是否了解过智能指针

auto_ptr,使用完毕能够自动销毁内存。

9.是否作过GUI界面

作过GUI界面,可是是用matlab作的。

最后就是HR面,HR小姐姐挺漂亮的

1.自我介绍(学习方面)

2.学习期间最有成就感的事

发表sci论文

3.最可惜的事

和女友分手

4.大华是不是你心中的理想公司

吹了一波

5.实习日期,一周几天等




暂时只有这些,持续更新中,若有错误请指正