面试题搜集
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查看内存使用情况
思路:取矩形中心和纸的中心,然后连线就可以。
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查看内存使用情况
相关文章推荐
- 黑马程序员-Java基础:面向对象(上)
- 整理其他前端常见面试知识点
- 《剑指Offer》面试题:在 O(1)时间删除链表结点
- Android面试题目及其答案
- 程序员的自我修养及进步
- 剑指Offer第二章面试题(Java版)
- 常见的二叉树面试题大汇总(涵盖二叉搜索树)
- 剑指offer——面试题:42(二)s的连续正数序列
- 《剑指Offer》面试题:反转链表
- 剑指offer——面试题41:(一)和为s的两个数字
- Hibernate学习之面试问题汇总
- 腾讯面试(一)
- 腾讯面试(二)
- 一位39岁程序员的困惑:知道得越多编程越慢怎么办?
- 程序员的回归式进化
- 黑马程序员—————Java基础--------多线程
- 程序员的人生规划
- 面试热问——你的职业规划是什么?
- 推荐!国外程序员整理的机器学习资源大全
- 黑马程序员java之IO_2