一个月来面了大大小小的公司有近10个,还是总结一下吧,希望对大家有点用处。

我想说的是,大学四年,如果不会继续读研深造,那么你需要做的不仅仅是疯狂的做项目,或者单独的学算法。

最好的方式就是都了解一点,但是要有自己擅长的东西,面试的问题无非就是那几个方面,比如C/C++(当然如果

你的主要语言和我一样是C/C++的话), 操作系统,计算机网络,有一个项目(只要不是档次那么低就可以),

然后就是基本的算法和数据结构(这个,我觉得是大多数学生所欠缺的)。

一.  腾讯

昨天到上海参加现场面试,到现场之前感觉不是那么紧张,到了才觉得有点慌了。

别的不说,霸气的大楼看了就让我不敢抬头说话了。到了11楼会议室,加上我只有5个人在等面试。

没要几分钟,工作人员就让我到某间会议室去面试,进去之后,第一眼我就发现那位面试官穿的拖鞋,

不过也没有太多惊讶,毕竟人家的主场。

好啦,进入正题。

首先,他看了看简历,就开始问了我项目的问题,其实这是我最不愿意被问的东西,然后就硬着头皮给他babalabala。

之后说到多线程,他问我项目中用的是阻塞还是非阻塞。。我压根就没了解过这个词啊!!于是就说不知道了。

问: 我项目中有哪些亮点?

我又是一顿babalabala。。

问: 你擅长哪些东西呢?

答:C/C++比较熟悉,对Linux也挺熟的,还有一些基础的算法和数据结构。

于是,

问: 虚函数是干嘛的?

答: 我想这特么简单啊,虚函数用在继承中,希望子类重写父类中的虚函数,用来实现多态啊。

问: 那虚析构函数呢?

答: 这个也是虚函数啊, 当用父类指针指向子类实例的时候,析构该指针所指向对象时会先调用子类的析构函数,然后再调用父类的析构函数。

问: 数组名和指针有什么异同呢?

答: 数组名指向的就是数组的首地址。后来想想,这个问题我回答的超级烂,数组名在编译器看来就是个常量,在编译阶段就可以知道的值。

这种问题,我就是一时想不到那么多,还是不太熟悉呀,细节最重要。

问: 写一个宏,求两个数的最大值。

(我心里想,居然问我这种小儿科问题,我最擅长的啊!当然,我知道会有很多人会写不好这个简单的问题)

答: 我在纸上迅速写了下来

#define MAX(a, b) ((a) > (b) ? (a) : (b))

问:定义一个函数指针,该函数返回类型为int,有一个int型的参数。

(我想,好简单。问这种问题好爽)

答: 在纸上写了。面试的时候都是在纸上写代码。还好我练过!

int (*func)(int);

问:你读过那些有名的书吗?

答:<<C++ Primer>>, <<C指针>>, <<C陷阱和缺陷>>, <<C专家编程>>, 还有鸟哥的Linux书籍,一些算法和数据结构的书。

问:写一个函数,输入为一个字符串,字符串可能包含一些空格, 输出是这些以空格作为分隔符的字符串数组。

显然这个问题不是那么简单,会有许多需要注意的地方,我想了一下,在纸上写了起来。

 vector<string> split(string inputString) {
vector<string> answer;
unsigned int length = inputString.size(), i = ;
while ( i < length && inputString[i] == ' ' ) i++; string str = "";
for ( ; i < length; i++) {
if ( inputString[i] == ' ' ) {
answer.push_back( str );
str = "";
while ( i < length && inputString[i] == ' ' ) i++;
i--;
} else {
str += inputString[i];
}
}
if ( str.size() ) answer.push_back( str ); return answer;
}

这是最后一个题目,写完我就觉得简直完美。。但是回来的路上一直很忐忑,生怕哪里写错掉。

回来之后我把代码写了一遍测试,发现居然少了一句话。。。。尼马,简直了!

其实上面代码里的 倒数第二句我当时忘掉了。。。也就是没有这句。

 if ( str.size() ) answer.push_back( str );  

算是对自己的一个教训吧。这个题并不是什么难题,但是写代码的时候我觉得一定要注意以下几点:

1. 变量的命名规则

2. 代码风格,有的人离开编辑器或者IDE就不会写代码了。

3. 一定要细心,不要急着写好就给面试官看,仔细检查,就可以避免我当时的低级错误。确实有点紧张。

4. 考虑要周到,如果字符串头部或者尾部有空格怎么把,或者中间有多个连续的空格怎么处理,这些都是细节,要小心。

面试最后,他让我问他几个问题,我也就随便问问说实习生来到这里会被安排做哪些工作呢?每天开几次会?babalabala。。。

滚粗咯...........

二. 妙技旅行(北京, 创业公司)

对这个公司的实习的职位超级有feel,因为职位描述的和我要找的工作真的很贴近。

这是在周二下午即将要上三四节课的时候打来的电话。

当然,他是看过我的简历了,然后就开始问啦。

首先,问了项目的东西,但是他问的是我写的LRU Cache。

问: 你是怎样实现这个机制的呢?

答: 双向链表+map,其实这里还balabala了好多。不太记得了。

问:LRU有什么缺点呢?就是在什么情况下会表现的很差?

答: 不知道。(我当时是真的想不起来了,现在我知道有一种情况是weak locality)

问:Python的可变类型和不可变类型是什么?

答:比如tuple是不可改变,(他还举了个例子让我来回答)

问:将BST变为一个双向链表。

答: 时间有点紧,想不出来. (其实只需要dfs一下就ok了。

问: 你知道STL 的map是用什么实现的么? 他的插入删除效率是多少?哪个更块一点呢,为什么?

答: map用RB-Tree实现的,插入和删除的效率均摊情况下都是对数级别的。至于插入和删除哪个更快一点,我不太清楚( 后来知道和旋转的次数有关

问: 二分查找的效率是多少? 你可以解释一下二分查找么?

答: 效率是对数级别。我给他举了一个"猜数字“的例子。

问: 你可以解释一下C++的多态吗?

答: 当使用基类指针或引用指向派生类的实例时,会根据其实际类型进行动态绑定。(略了一些, 忘记了。。

问: 你知道sed和awk的区别么?

答: (这个问题我并没有回答到点子上,他后来和我说sed是面向行的,而awk是面向列的。。我才明白

问: 我想查看文件的前几行或者后几行怎么办?

答: 使用head和tail。

问: 你有什么问题想问我的吗?

答: balabalabala

实习面试总结(只写了昨天腾讯的面试和拿到offer的一个小公司, 有空再把前面的补上吧)的更多相关文章

  1. 五月的仓颉大神写的 三年java程序员面试感悟 值得分享给大家

    感谢 五月的仓颉  的这篇文章 , 让我重新认识到自己身上的不足之处 .  原文地址http://www.cnblogs.com/xrq730/p/5260294.html,转载请注明出处,谢谢! 前 ...

  2. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  3. 阿里第二轮面试:手写Java二叉树

    阿里面试 现在很多公司在招聘开发岗位的时候,都会事先在招聘信息中注明面试者应当具备的知识技能,而且在面试的过程中,有部分对于技能掌握程度有严格要求的公司还会要求面试者手写代码,这个环节很考验面试者的基 ...

  4. 我从LongAdder中窥探到了高并发的秘籍,上面只写了两个字...

    这是why的第 53 篇原创文章 荒腔走板 大家好,我是why. 时间过的真是快,一周又要结束了.那么,你比上周更博学了吗?先来一个简短的荒腔走板,给冰冷的技术文注入一丝色彩. 上面这图是我之前拼的一 ...

  5. Go 只读/只写channel

    Go中channel可以是只读.只写.同时可读写的. //定义只读的channel read_only := make (<-chan int) //定义只写的channel write_onl ...

  6. ES6新增对象方法的访问描述符:get(只读)、set(只写)

    Es6新增对象方法的访问描述符:get(只读).set(只写),可以直接使用,一般用于数据监听,用途类似于vue.$watch. var obj = { a:1, get bar() { return ...

  7. JS调用函数时候加括号与只写函数名字的区别 fn与fn()的区别

    经常见插件里面函数调用的时候只写个函数名字,不写函数参数,甚至连括号也不写,比如说: <!DOCTYPE html> <html> <head> <meta ...

  8. python文件的只读,只写操作

    只读:r rb(bytes类型数据) 只写:w wb(bytes类型数据) 在文件最后追加: f = open('log',mode='a',encoding='utf-8') f.write('这里 ...

  9. 只写Python一遍代码,就可以同时生成安卓及IOS的APP,真优秀

    前言: 用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择 我们使用kivy开发安卓APP,Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写 ...

随机推荐

  1. vue+Iview+gulp 生成文档说明

    1.安装npm gulp相关插件 比如:gulp.gulp-concat.gulp-htmlmin.gulp-cssmin.gulp-cheerio.gulp-clean 2. 编写gulpfile. ...

  2. MFC打开/保存文件对话框:CFileDialog

    MFC打开/保存文件对话框:CFileDialog CFileDialog   文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFileDialog::CFileDial ...

  3. Duilib中各个类的简单介绍

    DirectUI意为直接在父窗口上绘图(Paint on parent dc directly).即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上.微软的“D ...

  4. vue+element的el-menu组件实现路由跳转及当前项的设置

    <el-menu router :default-active="$route.path" class="el-menu-vertical-demo" @ ...

  5. NTT FWT(xor or and) 模板

    void nnt(int a[],int len,int on) { ;i<len;i++) if(i<r[i]) swap(a[i],a[r[i]]); ;i<len;i<& ...

  6. php实现在不同国家显示网站的不同语言版本

    首先,你的网站本身要拥有多个语言版本.不然的话你就只能用JS去转化了. 1.通过ip去定位,这个要引用到第三方的接口进行数据的完整返回,但是不知道是我的网速太慢还是什么原因,个人觉得这个方法会卡顿: ...

  7. 跟我一起使用create-react-app脚手架搭建vw-layout解决方案

    之前也是看过大漠的vw适配Vue-cli,我自己写H5,还有使用vue做项目的时候,会搭建大漠博客中的那一套. 现在在github上面,看见了一位博主使用create-react-app也是用vw适配 ...

  8. vue_cli 安装

    1.安装node 2.cmd node-v3.如果是刚刚安装输入 node-v 会成功出现版本 如果不是全局安装 过段时间输入 node-v会出现 'node' 不是内部或外部命令,也不是可运行的程序 ...

  9. Android开发 GradientDrawable详解

    前言 GradientDrawable类似与Xml布局里的shape,常用在一些自己封装的对话框控件的背景或者其他View中,优势是不需要你在带着xml布局文件一起封包.. 画线 GradientDr ...

  10. ODOO/OPENERP的网页模块QWEB简述

    1.web 模块 注意,OpenERP 模块中 web 部分用到的所有文件必须被放置在模块内的 static 文件夹里.这是强制性的,出于安全考虑. 事实上,我们创建的文件夹 CSS,JS 和 XML ...