各大IT公司校园招聘程序猿笔试、面试题集锦
最后更新于:2022-04-01 21:43:42
# 百度一面
1、给定一个字符串比如“abcdef”,要求写个函数编程“defabc”,位数是可变的。这个比较简单,我用的是strcpy和memcpy,然后他问有什么优化的办法,我就不知道了。
2、socket过程就是socket的server和client整个流程写下来,这个还是没啥问题的。
3、数据结构二叉树的遍历,给了个二叉树,前序、中序、后序写出来,这个没什么难度。
[http://blog.csdn.net/hackbuteer1/article/details/6583988](http://blog.csdn.net/hackbuteer1/article/details/6583988)
4、树的层次遍历,这个开始真忘了,想了半天才想起来用队列。然后他又让我详细写出入队出队的过程,总之还是搞定了。
5、两圆相切转圏问题——一个小圆半径是1厘米,一个大圆半径是5厘米,小圆沿着大圆转圈,请问要转几圈可以转完大圈?这个问题在行测题做过,就是公转自转的问题,不管大小圆半径是多少,外切转圏要转R/r+1圏,外切转圏转R/r-1圈。
# 百度二面
1、二叉树的前序遍历的递归和非递归的可执行程序
[http://blog.csdn.net/hackbuteer1/article/details/6583988](http://blog.csdn.net/hackbuteer1/article/details/6583988)
2、写出快速排序的实现代码,一个是字符串拼接函数的实现strcat(),还有大数相乘,都是基本题。
3、归并排序的实现。
[http://blog.csdn.net/hackbuteer1/article/details/6568913](http://blog.csdn.net/hackbuteer1/article/details/6568913)
4、文件按a~z编号,aa~az,ba~bz...za...zz...aaa...aaz,aba~abz...这样的方法进行编号。给定任意一个编号,输出文件是第几个文件。并写出测试方法。简单,把编号看成26进制,这题就是一个十进制和26进制的进制转换问题了。
5、编程:两个链表,按升序排序,合并后仍按升序,不准用递归,并求复杂度
# 百度电面:
1、谈谈你对数据库中索引的理解
2、现在普通关系数据库用得数据结构是什么类型的数据结构
3、索引的优点和缺点
4、session、cookie和cache的区别是什么
5、如果有几千个session,怎么提高效率?
6、session是存储在什么地方,以什么形式存储的?
# 新浪技术部笔试题
#
一、数据结构和算法
1、简述什么是hashtable,如何解决hash冲突
2、什么叫二叉树,满二叉树,完全二叉树
4、数组和链表有什么区别,分别用在什么场合
二、操作系统
1、什么叫虚拟内存
2、块设备和字符设备有什么区别
3、进程和线程的区别
4、简述TCP网关连接交互细节
三、Lunix
1、写出10个常用的linux命令和参数
2、如何查看磁盘剩余空间 df -h1
3、如何查看端口是否被占用
4、如何查看某个进程所占用的内存 用ps命令查看进程的内存
四、程序题(具体题目记不太清了)
1、用两个线程实现1-100的输出
2、把一个文件夹中所有01结尾的文件前十行内容输出
# 思科一面:
#
1、C++和Java最大的区别是什么?
2、static、extern、global的作用?(再一次出现了static,上镜率真高挖~)
[http://blog.csdn.net/hackbuteer1/article/details/7487694](http://blog.csdn.net/hackbuteer1/article/details/7487694)
3、inline内联函数是否占用运行时间?
思科二面:
1、进程和线程有什么区别?
2、进程的调度算法,把记得的全说出来
3、页面的替换算法都有哪些?
4、用户态和内核态的区别?
5、平面上N个点 没两个点都确定一条直线 求出斜率最大 那条直线所通过 两个点 斜率不存在 情况不考虑 时间效率越高越好
解法:先把N个点按x排序。
斜率k最大值为max(斜率(point[i],point[i+1])) 0<=ib->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
6、求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2)
1、实现一个atoi函数==>'注意正负号的判定'
2、翻转一个句子,其中单词是正序的==>两次旋转
3、二叉树两个结点中的最小公共子结点==>求长度,长度之差,远的先走,再一起走
4、三角阵中从第一行到最后一行(给出搜索方向的限制)找一个连续的最大和==>广度优先搜索√
5、实现一个STL中的vector中的尽量多的方法。
6、字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小。
~~~
/**
**author :hackbuteer
**date :2012-10-03
**/
void Arrange(char *str , int n)
{
int i , k = n-1;
for(i = n - 1 ; i >= 0 ; --i)
{
if(str[i] != '*')
{
if(str[k] == '*')
{
str[k] = str[i];
str[i] = '*';
}
--k;
}
}
}
~~~
7、说说outer join、inner join、left join、right join的区别是什么?
内连接:进行连接的两个表对应的相匹配的字段完全相同的连接。join
外连接又分为左外连接和右外连接。
左连接即LEFT OUTER JOIN:
两个表进行左连接时会返回左边表中的所有的行和右边表中与之相匹配的列值没有相匹配的用空值代替。
右连接即RIGHT OUTER JOIN:
两个表进行右连接时会返回右边表中的所有的行和左边表中与之相匹配的列值没有相匹配的用空值代替。
我们建立两张表,students、class并插入测试数据
students
---------------------------
id name classId
1 name1 1
2 name2 null
3 name3 2
---------------------------
class
-----------------------
id name
1 class1
2 class2
3 class3
-----------------------
实验结果如下:
mysql> select s.name,c.name from students s join class c where s.classId=c.id ; (注:inner join和join一样)
+-------+-------+
| name | class |
+-------+-------+
| name1 | 1 |
| name3 | 2 |
+-------+-------+
2 rows in set
mysql> select s.name,c.name from students s left join class c on s.classId=c.id ; (left join 和 left outer join 一样)
+-------+-------+
| name | class |
+-------+-------+
| name1 | 1 |
| name2 | NULL |
| name3 | 2 |
+-------+-------+
3 rows in set
mysql> select s.name,c.name from students s right join class c on s.classId=c.id ; (right join 和 right outer join 一样)
+-------+-------+
| name | class |
+-------+-------+
| name1 | 1 |
| name3 | 2 |
| NULL | 3 |
+-------+-------+
3 rows in set
';