今天去百度知道面试后台开发实习生,大致流程:自我介绍,聊了很多项目相关的东西,问得很多,不过都是简历上的,然后问了一些算法题和基础知识,最后惯例问有什么要问他的。
题目如下:
(1)介绍一下常见的排序算法以及复杂度,用代码实现快排。
常见的排序算法,冒泡排序,复杂度O(n^2),归并排序、堆排序、快排,都是O(nlgn)。
快排实现的代码如下:
解析:我是用Python做的,把B的每行字符串作为key值放到字典中,然后对A进行遍历,判断A中的字符串是否在字典的key中。
感觉问得问题难度不大,比较基础。需要额外注意的几点:
1.简历上写的项目、实习经历一定要都复习一遍,很多时候都会问简历上相关的问题。
2.基础知识一定要掌握牢固,比如基本的算法,Linux命令等。
题目如下:
(1)介绍一下常见的排序算法以及复杂度,用代码实现快排。
常见的排序算法,冒泡排序,复杂度O(n^2),归并排序、堆排序、快排,都是O(nlgn)。
快排实现的代码如下:
int partition (int A[],int p,int q)
{
int x=A[p];
int i=p;
int temp;
for(int j=p+1;j<=q;j++)
{
if(A[j]<=x)
{
i++;
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
temp=A[p];
A[p]=A[i];
A[i]=temp;
return i;
}
void quicksort(int A[],int p,int q)
{
int r;
if(p<q)
{
r=partition(A,p,q);
quicksort(A,p,r-1);
quicksort(A,r+1,q);
}
}
(2)有两个文件A和B,每个文件的每一行都是一个字符串,求出A中出现但是在B中没有出现的字符串的合集。解析:我是用Python做的,把B的每行字符串作为key值放到字典中,然后对A进行遍历,判断A中的字符串是否在字典的key中。
代码如下:
if __name__ == "__main__":
dic={}
result=[]
f_b=open(file_b,"r")
for line in f_b:
key = line.strip()
if key in dic:
pass
else:
dic[key]=1
f_b.close()
f_a=open(file_a,"r")
for line in f_a:
key = line.strip()
if key in dic and key not in result:
result.append(key)
print result
(3)有一个文件有1000000行,随机输出其中的1000行。
解析:在1到1000000中随机生成1000个数,然后把这些行打印出来即可。
Python代码如下:
import random
import sys
if __name__ == "__main__":
count = 0
numbers = random.sample(range(1,1000001),1000)
for line in sys.stdin:
count+=1
if count in numbers:
print line.strip()
(4)问了一些Linux基本命令,比如awk,grep,查看磁盘容量,查看进程等。
总结:感觉问得问题难度不大,比较基础。需要额外注意的几点:
1.简历上写的项目、实习经历一定要都复习一遍,很多时候都会问简历上相关的问题。
2.基础知识一定要掌握牢固,比如基本的算法,Linux命令等。