【算法】2015-2016 阿里、百度、360、豌豆荚、搜狗面试题部分集锦

已经工作3个多月了。整理曾经资料的时候,顺手翻到了之前实验室小伙伴们面试的记录。索性就分享出来了,须要的人能够參考一下

360(c++)

1面
1、堆排序
2、kmp
3、虚函数的作用
4、top k
5、int 范围的非常多的数,排序


2面
1、从左上角走到右下角一共多少种走法(用组合数学来说)
2、从左上角走到右下角对角线不能走
3、前序中序求兴许
4、怎样找出分析出一个用户的年纪,用机器学习的方法
5、说说你学习的机器模型(不懂)
3面
1、为什么没有机器学习的知识来报我们部门
2、证明你的学习能力强
3、有啥问题


阿里(一面)c++

1.使用cmd进入命令行模式,键盘上单击随意字符,对应字符会出如今界面上,这个过程发生了什么?
 我答得是:保存当前状态栈,进行IO中断处理。处理完后继续进行当前任务。(面试官说要微观的过程,不理解)
2. 进入命令行模式,光标一直在闪动。这里又发生了什么过程?(难道不是等待输入,不理解想要问什么微观过程)
3. 假设让你设计memcpy(des,src,size)函数,若是不知道所传參数类型,怎么知道des的大小和size关系?
4. 相同的问题,对于strcpy(des,src)函数。怎样知道des的大小(面试官说的是。假设你先给des malloc一段空间,当时你是知道该des指针的大小的,可是他作为參数传输strcpy函数中,怎样获取它的大小呢)
5. 说几个常见的设计模式理解。
6. 若想尽量防止内存泄露,应该怎么办?
    刚開始说的是new和delete要成对出现,被他歧视一通,然后想起了智能指针说了一下。



阿里(一面)android

activity生命周期
开屏和关屏后activity的生命周期
java内存模型
设计一个android的登录系统
http状态码 post get差别
推送机制(xmpp协议)
介绍一下项目
项目中的问题和解决方式
数据库优化select语句
冒泡排序
3升的杯子和5升的杯子量出4升的水
优缺点
工作地点选择


阿里(一面)c++

问了在构造函数括号体内初始化和成员列表初始化有什么不同?

成员列表的初始化顺序

拷贝构造函数都在什么情况下会被调用?

怎样防止拷贝构造函数被调用?

默认的拷贝构造函数是怎么实现的?(还有浅拷贝的问题)

虚函数的作用?

Public,protected,privatekeyword的作用?这3中继承各自是什么情况?

说一下红黑树

用过哪些STL的容器?说说各种容器的作用

说一下项目的东西

职业规划是什么?


豌豆荚 c++

一面:都是手写代码
1.反转链表
2.全排列
3.编辑距离
4.写生产者消费者+堵塞通知是怎样实现的


二面:继续写代码
1.简单自我介绍
2.大数据问题
3.中序前序输出树
4.多线程问题
5.总结下了我的问题,还是非常NICE的一个人


三面:至今不知道这人是会技术还是真不会
1.装傻,我不知道网络编程,你给我讲讲
2.继续装,这个我也不知道你给我讲讲(J2EE)
3.我们来写个代码吧 上楼问题


搜狗 c++

1、问了项目。特别细节

2、合并n个数组,lc上题

3、找出n个数组同样的数

4、返回vector引用

5、红黑树咋实现的。。。(竟然问这个)不懂

6C++写一下单例(static的。不惬意)

 

二面

问了一个,怎样找统一词库(给你一坨网页。给你一坨query

怎样建立一个搜索推荐词库(类似百度搜索以下有一条的)

三面

自我介绍

然后给一个数组怎样压缩(没想到好方法)

1亿多个字符串文件,找出中位数

然后简述一下你对cache失效时间的做法。


百度 c++

1、tcp和udp差别 
2、tcp怎么保证到达顺序有序 
3、说说拥塞控制 
4、说说虚地址 
5、讲一下你对hadoop生态系统的理解 
6、求树中,两个节点之间的最长距离。距离定义为经过节点数。 
7、翻转链表


百度 c++

1. 自我介绍

2. 介绍项目---介绍印象最深的(影响最大)---为啥印象最深(收获最大)

3. 算法

a) 给定N个数,找第二大的数(O(n)),依次隐身找第K大的数(最小最大堆)

b) N!尾部0的个数,比方5!=120那个返回1,详细解法见编程之美

c) 类似3 Sum这种题目,详细解法就是排序之后,用前后两个指针扫描。由此减少一维复杂度。详情请分析下leetcode之3 Sum

4. 大数据-推荐看csdn july秒杀大数据那节

5. 和经理瞎扯


腾讯地图 c++

一面:

1. 谈项目(20分钟)

2. 算法(手写,2题)

Ø 题目1:给定一个有序数组,如[1,2,3,4,5,7,9,10],将数组后半段置前。即循环右移若干位,变成如[7,9,10,1,2,3,4,5],怎样在变化后的数组中高速找到给定目标;

參考链接:http://www.cnblogs.com/davidluo/articles/1837561.html

(ps:不要试图去查找右移位数或尝试将数组分成两个有序段然后再做二分)。

Ø 题目2:给定一个数组,数组随意相邻的两个数的绝对值差的大小为1。给定一个目标t,怎样高速找到他的位置。

參考链接:http://blog.csdn.net/morewindows/article/details/10645269

二面

Ø 自我介绍(别再反复简历了,会被直接打断的。

。。)

Ø 项目简介(比較短)

Ø 我说的是C++/C。问了几个问题:

A. C和C++差别

B. C++多态、虚函数和面向对象的理解

C. C和C++是否能相互调用,externkeyword的理解

D. C++编译器内核(全然不懂。。。

E. 问了一个基类指针问题,实际上问的是基类和派生类内存分配问题(答得非常乱。。。

Ø 问了一个开放性问题,时间比較长:有这样一个系统,能反映实时路段的拥堵情况,即输入一个路段,系统返回一个该路段当前的拥堵状况信息。实现这样一个系统须要完毕哪些功能模块。某一模块的详细实现(流程,非算法)。问了好久,实在问不下去了,就说这题就到这里吧。

Ø 由于我简历写了实验室定位的项目。并且部门又是腾讯地图。所以问了一个问题:当前定位的主流方法有哪些,了解定位的趋势(说了百度、高德等等,忘了说腾讯。⊙﹏⊙b汗)


美团/蓝汛或者其他(记不清了)

问答题:

  1. Socket中三次握手的实现
  2. socket连接过程
  3. 堵塞与非堵塞、同步和异步
  4. selectepollepoll是怎样实现的(异步)
  5. 编译、链接的整个过程

预编译,编译,连接(动态链接、静态链接)

  1. 对于下面程序,C编译器和C++编译器的差别(C++编译器编译后加上输入输出參数信息,名字不同)

Int f(int a){return 0;}

  1. 内存布局(程序段、堆、栈、.bss.data…
  2. 为什么要有条件编译
  3. 内核申请内存的方法(kmalloc…非常多)
  4. ARP解析的全过程
  5. 什么是虚拟内存(磁盘上)
  6. 什么是原子操作。举例说明原子操作
  7. 多态
  8. Static的作用(函数内,全局变量)
  9. 进程栈和线程栈的差别
  10. 线程调度所涉及到的系统资源详细包含什么
  11. Inode结构体的作用
  12. 抢占式操作系统的缺点,怎样改善(低优先级永远无法运行,长时间不运行的低优先级把优先级调高)
  13. 为什么进程调度比线程调度更消耗cpu(多线程共用程序段,不须要进行程序的各种装载,进程调度须要装载各种程序段(我是这么说的))

 

算法:

  1. 两个有序数组。组成一个排好序的数组(原数组有反复,新的数组不可反复)
  2. 链表是否有环
  3. 推断IP是否有效
  4. 大数加法
  5. 包括二维坐标中三个点的最小园
  6. 两个文件10G100G的交集(long类型),交集输出到文件C
  7. 二叉搜索树到双向链表
  8. abcd…”字符串中第M个出现N次的字符
  9. 1~1亿中全部的质数
  10. 字符串匹配、KMP、乱序的匹配

 

系统设计:

         100张票,非常多个人去抢这些票(比如12306)设计一个系统处理这个问题

 

智力题:

         1100的阶乘

         2、一个村子生男则停止,生女则直到生男才停止,问最后男女比例

         3100个囚犯的问题(经典问题)


posted @ 2017-05-16 21:38  yfceshi  阅读(224)  评论(0编辑  收藏  举报