【面试总结】百度知道后台开发实习生

今天去百度知道面试后台开发实习生,大致流程:自我介绍,聊了很多项目相关的东西,问得很多,不过都是简历上的,然后问了一些算法题和基础知识,最后惯例问有什么要问他的。
题目如下:
(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命令等。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值