您的位置:首页 > 职场人生

面试题搜集

2015-09-04 22:50 351 查看
1、画一个矩形将剩下的面积二等分

思路:取矩形中心和纸的中心,然后连线就可以。

2、一长串数字除掉9之后的尾数

思路:数字相加除以9的倍数,余下的就是余数了

以上两题来源:http://www.blogjava.net/jayslong/archive/2011/10/16/qq_2012_offer_experience.html

岗位:腾讯移动开发

经验:笔试一定要考高分

3、哈希冲突

4、哪些http方法对于服务端和用户是安全的?

5、二维数组内存地址计算?

6、荷兰国旗问题?

问题描述:红白蓝三种球乱序排列,现在要用只扫描一遍的方法,使得相同的球在一起,且按红白蓝顺序。可以用012来表示

思想:用三个位置,begin,current,end当current,刚开始begin,current指向开头,end指向结尾。

若current为0,则和begin交换,两者都向前移动一个。

若current为1,则不交换,自己向前移动

若为2,则和end交换,end向后移动一个

当current>end时,循环结束

7、给定字符串A和B,输出A和B中的第一个最长公共子串。

思路:当有相同时往后走,当不同时则看是否已经有统计相同的,若是则回到开始,否则,继续向下。

8、在网络中传递二叉树

思路:利用中括号表示如a有左孩子b,没有右孩子则表示为[a b $],那么整个二叉树可以以这样的方式表示 [ a b [ c [ d f g ] [ e h i ] ] ]

9、在一个大文件中有100亿个32位整数,乱序排列,要求找出中位数,内存限制为512。

(1)利用外排来处理。完全排序之后,再统计

(2)分桶法 思路:化大为小,把所有数划分到各个小区间,把每个数映射到对应的区间里,对每个区间中数的个数进行计数,数一遍各个区间,看看中位数落在哪个区间,若够小,使用基于内存的算法,否则 继续划分

10、101个硬币中有一个假币,称两次,如何判断假币和真币谁重?

第一步:把硬币分为三堆儿(50,50,1),先拿两个50 放天平比较,如果相等,说明那个单个的就是假的,再随便拿一个真硬币和这个假硬币放天平比较一下就得到结果。

第二步:如果第一步的两个50 比较后不相等,此时一端50重,一端50轻。如果拿轻的一端50,分成两堆(25,25) 放到天平上,如果这两个25相等,则假硬币(重)在重的一端50里,否则(不相等)假硬币(轻)在这两个(25,25)里,也就是轻的一端50里。

11、洗牌算法

54张牌,洗完之后是随机的。

方法一:不断生成随机数,若原来的位置有数,则继续生成随机数,直到54张牌全部生成。

方法二:初始化数组,1-54,交换牌随机数次,(同时交换的两张牌的位置也是随机的)int cnt=rand()%1000这样来取随机数

12、最长公共子串。

思路:构造两个字符串组成的二维矩阵,比如说第一个字符串的位置3和第二个字符串的位置1相同时,则a[3][1]置1,这样在斜对角线上面连续的就是最长公共子串了。

为了统计方便,可以将连续的数不再设置为1,如果原来前面一个已经是1,则它设置为2,最后只要看那个最大就可以了。

最长公共子序列:

最大子序列:这个已经解决

最长递增子序列:

13、有这样一个数组,相邻元素差的绝对值为1,如A={4,5,6,5,6,7,8,9,10,9},现在给定整数A和目标整数t,请找到t在数组中的位置

思路:根据绝对值之差来找,基本上是递增的,比如说t=7,则用7-A[0],得到3,那么再将3加上7和A[0]的绝对值之差,再将位置3加上值之差,得到5,刚好。若还不是,则再将当前位置加上绝对值之差。

14、计算机存储系统分为哪几个层次?

计算机系统中存储层次可分为高速缓冲存储器、主存储器、辅助存储器三级。其中高速缓存是用来改善cpu和内存速度匹配的问题,主存负责运算,而辅助存储负责存储文件等。

15、HTTP和tcp的关系

HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。

在http1.0的时候,要发送一个请求,就要建立一个连接,因此需要建立多个连接,效率较低,后来改为http1.1建立一个连接后可以发送多个请求。

16、小明家过河的问题

小明和弟弟,然后弟弟接爸爸,妈妈和爷爷一起,小明接弟弟。

17、hash函数的构造方法

直接定址法、数字分析法、平方取中法、折叠法、随机数法、除留余数法。

考虑因素

1. 计算哈希函数所需时间

2. 关键字长度

3. 哈希表大小

4. 关键字的分布情况

5. 记录查找频率

冲突处理方法

1. 开放定址法 H = (H(key) + d) / m

2. 再哈希法

3. 链地址法

4. 建立一个公共溢出区

18、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people

where peopleName in (select peopleName from people group by peopleName having count(peopleName) > 1)

and peopleId not in (select min(peopleId) from people group by peopleName having count(peopleName)>1)

根据hanving count 判断重复,根据min ()来选择一个。

删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

下面这种方法是根据rowid来进行判断的,选择rowid最小的,同样需要group by

19、key-value数据库

和关系型数据库不一样,如对一个学生成绩进行存储,需要学生信息表,成绩和科目表,科目信息表,但是用key-value数据库则是以学生做为键,以成绩,个人信息做为值,而里面的成绩本身又做为键,科目又作为值。这种方式可以方便扩容。

20、 扇区称为磁盘上最小的可寻址的存储空间 ,簇是保存文件的最小磁盘空间(相邻的扇区组合在一起形成一个簇,文件的大小是簇的整数倍,即如果不够也要占用一个簇),字节是计算机中的最小存储单元

21、类型数组,可以直接定义如class A ,那么如果需要4个类对象时,可以用A a[4];
像通过a[0]就可以使用了,就和int类型一样。

22、某进制下52+32=124,那么该进制下4*5=?

这种题的意思是,都在一种进制下计算的,答案是32,为6进制

23、数据库操作问题

学生表Student(学生编号,班级编号,学生名称,性别)

学生成绩表Score(考试日期,学生编号,科目号,成绩)

科目表course(科目号,科目名称)

请写一个SQL,在2011-6-6号到2011-6-8号期间,数学成绩在该班排名为前3名,且总分高于该班总分平均分的学生姓名,以及该学生在该校的总分排名。

(1)select Score .学生编号,Score .成绩,Student .班级编号 from (Score inner join course on Score.科目号=course.科目号)as A inner join Student on A.学生编号=Student.学生编号 order by Student .班级编号, Score .成绩, where Score .科目名称='数学' and Score.考试日期 between ‘2011-6-6’ and '2011-6-8'

第一步完成的是学生编号,数学成绩,班级三列,作为V1

(2)select sum(成绩),Student.班级编号 from Score,Student where Score.考试日期 between ‘2011-6-6’ and '2011-6-8' group by Student.班级编号 作为v2

(3)select sum(成绩), 学生编号 from Score where 考试日期 between ‘2011-6-6’ and '2011-6-8' group by 学生编号 作为v3

(4)select top 3 学生编号 from v1 order by 成绩 group by 班级,学生编号 v4

(5)select v4学生姓名 from Student where 学生编号 in (select 学生编号 from v4) and

//问题比较大,我想过两天好好总结一下。难点,top能够进行分组取。inner join 用的不熟悉,求总分以及平均分,还有between的语法

24、Linux 下free查看内存使用情况
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: