面试干货整理

首先,通过和师兄师姐们交流,总结以下很重要:

  1. 目标要明确,找准自己到底是想要去国企(包括银行)、IT还是BAT
  2. 项目经验少的同学,可以尽量把自己参与过的项目熟悉一遍,即使不是自己做的,只要熟悉,也可以。除此之外,还有一种方法,关注业界牛人以及他们的开源项目,了解他们的开源项目。
  3. 即使没有时间,也可以大胆的去找实习,面试经验很重要,不要怕跪,offer就是在一次次跪之后才拿到的。并且,实习或者找工作尽量找内推,并且要找熟人内推。
  4. 刷题尽量脱离IDE环境,采用纯文本或者就在纸上写,因为面试的时候可没有提示给你。
  5. 面完一次之后要立即总结,不要等到之后,说不定就会忘了或者下一次问到了而你却还没总结。
  6. 自学过程中要做好笔记,写出自己的理解,这样在一段时间过后,拿到还能比较容易看懂。
  7. 国企面试一般是群面,并且男生比女生有优势,颜值高的比颜值低的有优势,身高也有限制。面试过程中一般不会面多少技术,基本都是讨论或者闲聊。注意,银行里面中行会有技术面。

下面是一些总结的干货资料。

1. 书籍(C++

面试基本的一些书籍:

《剑指offer

《编程之美》

《程序员面试宝典》

stl源码解析》

Effective C++

c++对象解析》

《深度探索C++对象模型》 

Design Patterns

Cracking the Coding Interview》(外企必看)

开发智力类:

《算法谜题》

《程序员的数学》

面试信息检索相关岗位:

《信息检索导论》

《大数据》

《这就是搜索引擎》

《推荐系统实践》

2. 博客

July的博客:http://blog.csdn.net/v_JULY_v/article/list/8

DP经典问题:

http://www.cnblogs.com/zhangchaoyang/articles/2012070.html

http://blog.csdn.net/zmazon/article/details/8247015

排序:

http://blog.csdn.net/piaojun_pj/article/details/5911914

基础知识:

面向对象:http://blog.csdn.net/column/details/cpp-class-primer.html

智能指针:http://blog.csdn.net/xt_xiaotian/article/details/5714477

TCP三次握手四次挥手:

http://blog.csdn.net/u012138828/article/details/38644445

多态和虚表:http://blog.csdn.net/wswifth/article/details/5741687

多线程:

http://blog.csdn.net/ccing/article/details/6215998

http://blog.csdn.net/zqf_office/article/details/9041951

static and consthttp://blog.csdn.net/yjkwf/article/details/6067267

各种树:http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html

一些面经博客:

http://www.cnblogs.com/sparkwen/

3. 面试题以及面经等网站

http://www.geeksforgeeks.org/ (有很丰富的面经和一些经典算法介绍)

http://www.careercup.com/page

一亩三分地: http://www.1point3acres.com/bbs/forum-28-1.html

面试外企英语准备:

可以尝试看网易公开课的英语视频等,例如Introduction of Algorithms.

公司对比:

http://www.kanzhun.com/activity/bcompany/index/?com1=11514&com2=5855

4. 刷题网站

Leetcodehttps://oj.leetcode.com/problemset/algorithms/

Topcoderhttp://www.topcoder.com/

Hihocoderhttp://www.hihocoder.com/

Codilityhttps://codility.com/train/  (和面试题目的风格很像)

USACOhttp://cerberus.delos.com:790/usacogate,http://www.usaco.org/http://www.nocow.cn/index.php/USACO_Training (我个人觉得练练前几章就OK了,之后题目可能偏竞赛)

leetcode是比较基础的,刷一遍练手 觉得难度不大可以再去刷一下后面几个网站的题目。

5. 面经(由人机交互实验室师兄师姐整理)

阿里测试:

1) 数据库查询,两个表,表A存有班级Class和姓名Name,表B存有姓名Name和分数Score,查询得到每个班中成绩>60分的人数。

2) 思考题:设计俄罗斯方块游戏时,如何设计数据结构。 曾哥说在编程之美上有。

3) 编程题:Leetcode上。给一个数组,将里面相邻的相同元素删除仅保留一个。如a b b c c b b b a a,结果为a b c b a

4) 其他就是针对项目问的虚函数,多线程等。

5) 写代码:给定一个字符串“123     789  10”,请输出字符串中数字的和。

6) 写代码:两个有序数组(升序、降序不明确),如何高效的判断是否有相同元素。

7) 专业基础题:

1)栈和队列的区别,哪个有记忆功能?

2)数据库,关联表中如何实现分组选择?

3)什么是死锁?怎么打破死锁?

4TCP/IP 3次握手?

阿里算法:

1) 讲解随机森林原理,以及它的每个节点的损失函数(答出熵,然后写出熵的公式就行了)

2) 熵的数学含义是什么

3) logistic回归的公式,以及它的损失函数是什么

4) SVM的损失函数怎么定义的,SVM的工作原理,SVM常用的核函数有哪些

5) 用没用过HMM?如果用过,请详细讲解HMM,并且给出HMM的一些典型应用,及其损失函数(答出维特比路径,并且说出EM算法即可)

6) 讲一下ADABOOST算法的原理

---------------------------------机器学习到此为止----------------------------------------------

7) 讲解一下static及其相关的所有用法

8) 讲解一下const及其相关所有用法,一个标记为const的函数,其内部的变量是否能被更改?如果不能,要怎么才能改?

9) 讲解一下STL里的vector是怎么实现的

10) map是什么数据结构实现的?(红黑树) 

11) 讲一下堆是怎么实现排序,插入,替换,删除的(图示即可)

-------------------------------------C++基础到此为止-------------------------------------------

12) 写代码-----树的先序遍历,非递归实现

13) 写代码片段---计算一个数的宽度 (即节点最多的一层中的节点数)

14) 写代码---给一个string S1和一个string S2,将S1中所有存在于S2中的字符都删掉,要求时间复杂度最低

15) 遍历一棵树

16) 一个数组里,有两个数的和刚好也在这个数组里,求这个最大的这个和是多少。  

17) 如何遍历有理数

-----------------------------------------代码到此为止-------------------------------------------

18) 对分词推荐算法有没有了解,知不知道TD-IDF公式,余弦相似度啥的。。

-------------------------------------以上,扯淡部分结束------------------------------------

19) 想做什么样的工作?

阿里算法:

1) 写快排,然后问快排哪里还能优化...

2) 两组大数据,但内存很小,怎么筛选出大数据中的相同元素

3) 数据集中,每个商品都有对应的分类,但分类有对有错,大部分都是正确的,少部分分类有错。

(1)如何筛选出分错类的商品并归入正确的类别?(计算相似度)

(2)如果商品跟两类的相似度差不多,如何处理?

阿里研发:

1) 地图上(x,y),如何找他举例最近的100个点。 地图相当于真实的北京市。

2) a->1  b->2  z->26  把数字转回字母有多少种情况。

3) 虚函数原理

4) C++多态指的是什么?

5) 把构造函数放在private下是为了什么?

6) 然后各种问项目细节(被鄙视项目水。。。)

7) 然后一段程序求输出 (面试官说这题是为了考反应能力。。。)

int count = 0;

int x=9999;

while(x){

   count++;

   x = x & (x-1);

}

答案:count = 8 (我竟然算算术都算错。。。坑爹地算成10

=========================================

8) 然后你的亮点是什么?你对互联网的了解?你以后的发展规划是啥?你觉得自己的水平怎么样?(PS:话说有点蒙,不知道怎么答好,回答地挺混乱的。。。)

阿里系统工程师:

1) 3min内介绍你自己,并且说出亮点。

2) 根据我之前的项目问了一些项目的细节,SELINUX的内部问题。

3) 非常大的文件在多台计算机之间完全同步的方法?

4) BT协议原理。实现。

5) 问了关于阿里云有什么了解,是否体验过。存在什么问题。

6) dhcp协议原理,如何实现的。

7) OSI七层结构和原理。

8) 很nice的提醒二面面代码和kernel

搜狗跨媒体搜索:

1) 让你根据你的简历,介绍你的项目,他随时有问题打断你提问,提问的问题有项目的实现,也有相关的问题,比如倒排索引里面索引压缩的问题,搜索的时候数据处理的速度等,(注倒排索引压缩的问题一面到三面的面试官都问过,大家可以去做相关准备,因为我之前做的时候没有做这块的东西,所以也就没得聊)

2) 给两道类似于智力题的

    a. 小明看了一场电影,他只记得看了大概两个多小时,但是不记得具体的时间,他记得进去的时候合出来的时候 手表上的时针和分针的位置交换了,问你,你能从以上的信息得出电影的时长

b. 有一张圆桌,AB两个人在桌上放硬币,硬币不能超出桌子,也不能重叠,(面试官估计也没有记清楚题目,开始的时候说每个人一次可以放任意多个,之后说一个人一次放一个)问你必胜的策略。(这题表示没有想明白大家集思广益想想)

3) 问了一下多线程,问同步,异步,死锁 等等的概念的区别。

4) 计算一个struct里面某一个变量的偏移量。面试官提示可以将0强制转化为struct指针。

5) 写中序遍历非递归

6) 一个字符串只有括号符,写一个函数判断这个字符串是否合法。只能用递归去实现,不能用循环。我先说一下常规的思路用stack来记录左括号,遇到右括号出栈,遇到栈为空即为非法,到字符串技术后栈不为空也为非法。

7) 根据简历的项目提问,问细节,当让再次提到了倒排压缩的问题,我依旧表示对这块不了解。(我想如果了解的话 应该很容易过这次面试了吧,哈哈瞎猜的)。

8) 让我介绍一下商用搜索引擎有哪些模块,我balabala的连写带说的说了一遍。中间他也会根据我说的补充一些问题,提示我是否有哪些模块没有考虑。

9) 我搜索引擎的线下模块有哪些,当我提到spider了之后,他就接着spider的调度,还有一些爬虫的循环爬取问了一些问题,问我怎么解决。

10) query的缓存的问题,问我query应该如何缓存,遇到了倒排更新的时候,缓存更新的情况。整个过程中也会和你进行交流,对你的方案提出一些疑问,然后引导你是否用别的方法去解决这个问题,对你的解决方案进行分析后,还会介绍他们部门是如何解决这个问题的。

11) 你最看重工作的元素

面经由各位师兄师姐整理

By 晏琪

更新于2015121

原文地址:https://www.cnblogs.com/yanqi0124/p/4239930.html