您的位置:首页 > 其它

人民搜索3

2012-12-13 21:41 330 查看
一、面试形式

1、3轮1V1的技术面试;某轮面试通过,稍事休息后开始下一轮面试。

2、面试过程基本分为两部分:

1)对简历上所写项目的描述,及回答对方感兴趣的项目细节;

2)对方给出数组、链表等常见程序设计问题,要求描述解决问题的思路;并把思路转化为代码(手写)。

这一部分是最重要的环节,占面试总时间的85%以上。

二、面试题回忆

1、删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。

2、求数组(元素可为正数、负数、0)的最大子序列和。

3、链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g

4、链表克隆。链表的结构为:

typedef struct list {

int data; //数据字段

list *middle; //指向链表中某任意位置元素(可指向自己)的指针

list *next;//指向链表下一元素

} list;

5、100万条数据的数据库查询速度优化问题,解决关键点是:根据主表元素特点,把主表拆分并新建副表,并且利用存储过程保证主副表的数据一致性。(不用写代码)

6、求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2)

7、求旋转数组的最小元素(把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元
素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。)

8、找出两个单链表里交叉的第一个元素

9、字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小

10、时间复杂度为O(1),怎么找出一个栈里的最大元素

11、线程、进程区别

12、static在C和C++里各代表什么含义

13、const在C/C++里什么意思

14、常用linux命令

15、解释Select/Poll模型

三、提示

1、面试给出的程序题,有些有一定难度,在确认清楚理解题意后,迅速思考。不管能否想到思路,建议3分钟之内,一定要把自己当前的想法告诉面试官,与其互动;如有必要,可在思维过程中要求给出提示。

2、要相信自己,不到面试官提醒耗时太久,都不要给自己心理暗示及告诉面试官,自己想不出来。

答案就在拐角处,坚持就是胜利。

3、虽说招聘信息是说熟悉C/C++或Java均可,但面试官偏好C/C++系(至少我遇到的4个都是这样;其中一个在我写出Java的代码后,要求用C再实现一遍)。

转自:/article/5723954.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: