最全的各大公司面试题
以下例题或类型题都是出自牛客网,想查看更多请去试题***哦 ~~ http://www.nowcoder.com/questionCenter
【百度一面】
1 给定一个字符串比如 “abcdef” ,要求写个函数编程 “defabc” ,位数是可变的。这个比较简单,我用的 strcpy 和 memcpy ,然后他问有什么优化的办法,我就不知道了。
2 socket 过程就是 socket 的 server 和 client 整个流程写下来,这个还是没啥问题的。
3
数据结构二叉树的遍历,给了个二叉树,前序、中序、后序写出来,这个没什么难度。
http://www.nowcoder.com/questionTerminal/43ebaf1908d8458998976eb51b5a244c?orderByHotValue=0&query=%E4%BA%8C%E5%8F%89%E6%A0%91%E9%81%8D%E5%8E%86&done=0&pos=4
4 树的层次遍历,这个开始真忘了,想了半天才想起来用队列。然后他又让我详细写出入队出队的过程,总之还是搞定了。
5 两圆相切转圏问题 一个小圆半径是 1 厘米,一个大圆半径是 5 厘米,小圆沿着大圆转圈,请问要转几圈可以转完大圈?这个问题在行测题做过,就是公转自转的问题,不管大小圆半径是多少,外切转圏要转 R/r+1 圏,外切转圏转 R/r-1 圈。
【百度二面】
1 二叉树的前序遍历的递归和非递归的可执行程序
这里推荐一些牛客网上的类似的题目,大家可以去试题***上查看更多 ~
2 写出快速排序的实现代码,一个是字符串拼接函数的实现 strcat() ,还有大数相乘,都是基本题。
4 文件按 a~z 编号, aa~az,ba~bz...za...zz...aaa...aaz,aba~abz.. 这样的方法进行编号。给定任意一个编号,输出文件是第几个文件。并写出测试方法。简单,把编号看成 26 进制,这题就是一个十进制和 26 进制的进制转换问题了。
5 编程:两个链表,按升序排序,合并后仍按升序,不准用递归,并求复杂度
【思科一面】
1 C++ 和 Java 最大的区别是什么?
2 static
、
extern
、
global
的作用?(再一次出现了
static
,上镜率真高挖)
http://www.nowcoder.com/questionTerminal/3dcc1dc72db540a4911f17252b84fb7f?orderByHotValue=0&query=static&done=0&pos=2
3 inline 内联函数是否占用运行时间?
【思科二面】
1 进程和线程有什么区别?
2 进程的调度算法,把记得的全说出来
3 页面的替换算法都有哪些?
4 用户态和内核态的区别?
【腾讯一面】
1 关系型数据库的特点
2 父类的析构函数为什么要定义为虚函数
3 float 型变量定义为 0 时应该怎么赋值才是正确的
5 KMP
算法实现程序
http://www.nowcoder.com/questionTerminal/afdde7e88300461282ea0a84b536753c?orderByHotValue=0&query=KMP&done=0&pos=2
6 override 和 overload 的区别
【腾讯二面】
1 在数据库中如何创建一个表
2 创建后如何添加一个记录
3 如何删除一个记录
4 请编写实现 malloc() 内存分配函数功能一样的代码。
5 请编写能直接实现 strstr() 函数功能的代码。
6 已知:每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机), 一箱油可供一架飞机绕地球飞半圈,问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)
7static 的作用 —— 再一次出现 ~
8 写 string 类的构造,析构,拷贝函数 —— 这题大约出现过 4 次左右,包括编程和程序填空,程序员面试宝典上有这题,也算是个经典笔试题,出现几率极大 ~
【微软面试题】 :
1 给你一个凸多边形,你怎么用一条线,把它分成面积相等的两部分
2
有一条数轴,上有一整数点
s
,点
s
两侧分别放了两个机器人,不知道两个机器人分别距离
s
的距离,两机器人不能相互通信。
现在,给你以下指令:
R
(往右一格)
L
(往左一格)
IF(S)
是否在
S
点
GOTO A
,跳到
A
代码段。
设计一套指令给两个机器人,让两个器机可以最终在某一点相遇。
3 怎么判断两棵二叉树是否是同构的
4 按层次打印一个二叉树
5 给你一个数 n (最大为 10000 ),怎么求其阶乘
6
判断两个单链表是否有交叉
【 58 同城面试题】 :
一面 :
1 set( 底层基于红黑树实现 ) 的操作;
3 KMP 原理解释
4 聚类分类协同过滤算法;
二面 :
1 提示词实现 Trie 树 +hash
2 最快速度求两个数组之交集;
3
文章最短摘要生成;
【迅雷面试题】 :
1 写一个字符串插入的函数
2
问了我关于虚函数底层的实现
http://www.nowcoder.com/questionTerminal/4ef1d67edee049c78aa597067c519246?orderByHotValue=0&query=%E8%99%9A%E5%87%BD%E6%95%B0&done=0&pos=1
4
问我
TCP
、
UDP
的一些知识
http://www.nowcoder.com/questionTerminal/f0ad01d581b74aedae546fc92cba7bde?orderByHotValue=0&query=tcp%20%20udp&done=0&pos=1
5 还问了我一些 Linux 的知识
【 网新恒天一面 】 :
1 考察指针 int (*p)[10] 和 int *p[10] 的区别,用法
2 sizeof(),strlen() 的区别和用法
3 堆、栈的区别和用法
4 多继承的优点与缺点
5 (1) IO2:30ms, CPU 20ms, IO1 20ms, CPU 30ms
(2) IO1
20ms, CPU 20ms, IO2 10ms
(3) CPU 30ms, IO1 20ms
求三种情况的
CPU
和
IO
占用率
【网新恒天二面】 :
1 内联函数与宏的区别
2 与信号量相关知识的考察,具体题目记不清了,反正知道基本概念就会做
3 填空,考察页式虚拟内存的缺页情况,也是知道这部分知识点就会做的题
4 类的继承相关知识点的考察,是一道程序输出分析题
5 栈的类的成员函数的实现,程序填空题。
6 模板函数与函数模板的区别
7
函数模板与类模板的区别
【百度笔试题】 :
1 数组,链表的优缺点:这个问题比较简单不过我自己经常会忽略的一点是数组是固定空间,链表是可变空间
2 a[N][20] 输入 N 个长度不超过 20 的字符串,比较这些字符串中是否有完全相同的字母,且相同字母数是否相等。如何改进该算法,降低复杂度。
3
猜扑克牌
——
给定一些牌,把花色告诉,把点数告诉乙
甲:我不知道
乙:我知道你不知道
甲:现在我知道了
乙:我也知道了
求是哪张牌。
给定的牌我不记得,反正这个题很简单,行测中的简单题,网上比比皆是。
4 A:M*M
矩阵,求字符串
S
是否存在
A
的连续对角线上。(这题应该有涉及到一个之字二维矩阵方面的知识)
A
若为内存装不下的大矩阵该如何处理?
5
系统接收数据包
32
字节,第
1
字节为优先级,其余为数据。设计一个调度算法
(
1
)优先级高的先处理
(
2
)同等条件下,请求次数多的先处理
(
3
)优先级高的一定比优先级低的先处理
写出所用的数据结构的定义,计算空间容量。
【阿里巴巴 B2B 一面】
1 各种排序算法的比较次数
2 static 、 auto 未初始化的初始值
3 x*=y+8 ,给出 x,y 的值,求该表达式计算后二者的值
4 enum 类型的 default 赋值规则
5 定义函数 F(int x){return (x*x);} 求 F ( 3+5 )
6 fgets(s,n,f) 函数的功能
7 定义 *s="ab\0cdef", 输出该字符可以看到什么结果
8 还是 static 相关知识 —— 在此说明一下 static 这个关键字相当重要,在笔试中出现率为 100% ,在面试中出现率 50% 。
9 数据库中索引,簇索引,非簇,唯一,复合,覆盖索引的区别
10SQL 语句和范式是对数据库有要求的公司笔试必考点之一
【阿里巴巴 B2B 二面】
1 通配符的含义
2 死锁的基本知识 —— 死锁是各大笔试面试中出现率 50% 的知识点
3 信号量 P 、 V 原语的相关知识点
4 有向图的邻接表表示
5 STL 中迭代器的工作原理,迭代器与普通指针有什么区别?
迭代器和指针相同的地方:
指针和 iterator 都支持与整数进行 + , - 运算,而且其含义都是从当前位置向前或者向后移动 n 个位置
指针和 iterator 都支持减法运算,指针 - 指针得到的是两个指针之间的距离,迭代器 - 迭代器得到的是两个迭代器之间的距离
通过指针或者 iterator 都能够修改其指向的元素
通过上面这几点看,两者真的很像,但是两者也有着下面的几个不同地方
out 操作符可以直接输出指针的值,但是对迭代器进行在操作的时候会报错。通过看报错信息和头文件知道,迭代器返回的是对象引用而不是对象的值,所以 cout 只能输出迭代器使用 * 取值后的值而不能直接输出其自身。
指针能指向函数而迭代器不行,迭代器只能指向容器
这就说明了迭代器和指针其实是完全不一样的概念来的。指针是一种特殊的变量
,
它专门用来存放另一变量的地址,而迭代器只是参考了指针的特性进行设计的一种
ST
接口。
笔者曾在网上看到这样一种说法:迭代器是广义指针,而指针满足所有迭代器要求。迭代器是
STL
算法的接口,而指针是迭代器,因此
STL
算法可以使用指针来对基于指针的非
STL
容器进行操作。
笔者觉得上面说法也有几分道理,但是到底正不正确就留给看官自己判断了。但是有一点希望大家注意的是:千万不要把指针和迭代器搞混了。也许某些编译器使用指针来实现迭代器以至于有些人会误以为指针和迭代器是一个概念来的。
6 什么是友元?
7 delete 、 new 的用法
8 typename 的用法
9 编程判断一个数是否为 2 的幂
10 你怎样重新改进和设计一个 ATM 银行自动取款机?
12 10000Mbps 万兆交换机怎么实现?
13
操作符重载的相关知识点,大题,具体记不清了
【人民搜索的笔试题】
总结如下
1 打印汉诺塔移动步骤,并且计算复杂度
2 计算两个字符串的是否相似(字符的种类,和出现次数相同)
3 定义二叉树,节点值为 int ,计算二叉树中的值在 [a,b] 区间的节点的个数
4 动态规划题:一条路有 k 可坑,每次能跳平方数步长( 1 4 9 16 。。),不能跳到坑里,从 a 跳到 b 最少几步?
5
给一个整数数组,求数组中重复出现次数大于数组总个数一半的数。
【人民搜索的面试题】
1 对以孩子兄弟链接的树进行遍历,不能用递归,也不能借助任何辅助空间
2 假设数组 B 是升序 Int 数组 A 循环移若干得到的位,实现对数组 B 进行查找的高效算法
3 只有整数和 +-*/ 四种运算组成的算术表达书,实现其求值
4
还有一个是考贪心算法的,你让他们看算法导论那本书,关于
fractional knapsack problem
的那一段,就是
0-1
背包的一种变形;
【人民搜索的二面题】
1 实现一个 atoi 函数 ==>' 注意正负号的判定 '
2 翻转一个句子,其中单词是正序的 ==> 两次旋转
3 二叉树两个结点中的最小公共子结点 ==> 求长度,长度之差,远的先走,再一起走
4 三角阵中从第一行到最后一行 ( 给出搜索方向的限制 ) 找一个连续的最大和 ==> 广度优先搜索
5 实现一个 STL 中的 vector 中的尽量多的方法。