大家在面试的时候,难免会遇到让人摸不着头脑的逻辑题,这类题目让同学们往往连答案应该回答些什么都摸不清楚,只能和面试官四目相对,非常尴尬。
其实,很多面试的考官,都是从题库随机挑选逻辑题来考验同学们,面试官有时候自己也未必完全摸透这类题目,所以面试的时候不必过于紧张,就算答不出来啊也非常正常。
在我的理解中,这类题目主要还是考大家的思路,至于答案标准与否,其实不是特别重要。
本文总结了面试中我自己面试中遇到的几道非常常见的逻辑题,大家可以作为面试前的突击复习材料。
一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?
三个人
若是两个人,设A、B是黑帽子,第二次关灯就会有人打耳光。原因是A看到B第一次没打耳光,就知道B也一定看到了有带黑帽子的人,可A除了知道B带黑帽子外,其他人都是白帽子,就可推出他自己是带黑帽子的人!同理B也是这么想的,这样第二次熄灯会有两个耳光的声音。
如果是三个人,A,B,C。A第一次没打耳光,因为他看到B,C都是带黑帽子的;而且假设自己带的是白帽子,这样只有BC戴的是黑帽子;按照只有两个人带黑帽子的推论,第二次应该有人打耳光;可第二次却没有...于是他知道B和C一定看到了除BC之外的其他人带了黑帽子,于是他知道BC看到的那个人一定是他,所以第三次有三个人打了自己一个耳光
N个人是黑帽子,就会在第N天,有N个人打自己一个耳光。
一个是两种药片,每种有两个,一个人需要早上吃两种药片各一个,现在这四个药片混在一起了这个人什么方法吃。
把所有的4颗药丸都切开成相等的两半,然后早上和晚上,分别吃掉每颗药丸的一半
一个5L,一个6L的瓶子,要得到3L的水,问什么方法
6-5=1 1L水放在5L那个瓶里面,然后再装6L水,往5L(里面已经有1L)里面倒,这样就会剩下2L水在6L里面,再把2L水放在5L里面,再装一次,不就可以6L那里到处3L水到5L里面,自己就剩下3L了
一共1000瓶酒,其中一瓶有毒。如果一只老鼠喝了有毒的酒,会在一天之后死亡,那么如果给你一天时间,然你判定哪瓶酒有毒,至少需要几只老鼠?
答案是10只。这个需要使用二进制编码来解决,1000瓶酒至少需要10位二进制数来进行编码。然后取十只杯子分别代表这是个二进制数的十个位,分别将1000瓶酒倒入其编码为1的对应的杯子中。取十个老鼠分别喝十个杯子中的酒,一天之后,就可以根据喝哪些杯子的老鼠死掉来确定出有毒的那瓶酒的编码,从而确定哪瓶酒有毒。其根据就是只有有毒酒的编码对应的毒死老鼠的杯子位置。这个题目就是利用了二进制编码的一些特性。
还有一些其他的题目也使用这些特性,比如使用特殊的位运算,一般使用比较多的位运算就是与、或和异或。
这样,就可以对应到现实生活中的一些为题,比如一个类似的问题原本我们想需要用900多台服务器来解决,经过这样分析后就可以使用10台服务器来解决,大大节约了成本。
再比如,国王有10000桶酒,已知一桶酒有毒,喝了之后一定会在23-24小时内死亡(例如0点喝,会在23-第二天0点这个时间段死亡)。现在国王要在48小时后举办一个宴会,需要用罪犯实验,请问最少几个罪犯。(可以混合酒)
如果是常规利用二进制解题的话,那就需要14个犯人,2^14=16384>10000,但是这样一来死亡时间这个条件就用不到,也不是最优解。
应该利用酒死的时间是固定的,一个罪犯像上面那样可以表示成25种状态,三个罪犯就可以表示25 x 25 x25种状态,超过10000了,所以只需要三个罪犯。
有8个小球,其中七个的重量是相同的,有一个较轻。给你一个天平,问秤几次能找出那个较轻的小球,若天平只能秤两次,又该怎么秤
第一次两边各放随机三个,如果平了,则另外一个是轻的,若不平,还有第二次,拿出那三个轻的,在两边随机放一个,就能测出哪个最轻了。
本体图解参考:
https://blog.csdn.net/hinyunsin/article/details/6632062
已知: 每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有单独的加油机),一箱油可供一架飞机绕地球飞半圈
问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)
分为3架飞机5架次和3架飞机6架次
1. 3架飞机6架次
(上图)ABC 3架同时起飞
(上图)1/8处,C给AB加满油,C返航。此时飞机的油量分别是:A: 3/4, B: 3/4, C: 3/4。此时C分别给A和B加满油,三架飞机当前油量分别是:A: 1, B: 1, C: 1/4。C返回机场。A、B继续向前飞行。
(上图)1/4处,B给A加满油,B返航,A到达1/2处,此时C已经返回机场,三家飞机此时油量分别是:A: 3/4, B: 3/4, C: 0。此时B给A加满油,C加满油,此时三架飞机的油量分别是:A: 1, B: 1/2, C: 1。然后B返回机场,A继续向前飞行。
(上图)当A飞行至半圈位置时,B已经返回机场并且加满了油(假设加油时间为0),此时,B和C沿逆时针方向飞行,三架飞机当前油量分别是:A: 1/2, B: 1, C: 1。A继续向前飞行。
(上图)当A飞行至另外半圈的1/4位置时,三架飞机剩余油量分别是:A: 1/4, B: 3/4, C: 3/4。此时,C给B加满油。此时三架飞机油量分别是:A: 1/4, B: 1, C: 1/2。C返回机场,B和A继续向前飞行。
当A飞行至另外半圈的1/2位置时,C已经返回机场,A和B相遇,此时三架飞机剩余油量分别是:A: 0, B: 3/4, C: 0。B给A加1/4的油,三架飞机剩余油量:A: 1/4, B: 1/2, C: 1。C加满油从机场逆时针飞出,B返回机场,A继续向前飞行。
(上图)当A飞行至另外半圈的3/4位置时,A和C相遇。此时三架飞机的油量分别是:A: 0, B: 1/4, C: 3/4。C给A加1/4的油,此时三架飞机的油量分别是:A: 1/4, B: 1/4, C: 1/2。C掉头返回机场,A和B继续向前飞行。
(上图)三架飞机顺利回到机场!
2. 3飞机5架次
(1)3 架飞机同时从机场出发,飞行八分之一周(A点),各耗油四分之一。此时某架飞机给其余两架补满油,自己返回基地;
(2)另一架飞机和目标机结伴,飞至四分之一周(B点),给目标机补满油,自己返回;
(3)目标机独自飞行半周(C点);
(4)与从基地反向出发的一架飞机相遇,2 机将油平分,飞至最后八分之一处(D点);
(5)与从基地反向出发的另一机相遇,各分四分之一油,返回。
75道程序员面试逻辑题和答案
https://blog.csdn.net/qq_38361726/article/details/79824632
项目开发的一般流程:1.需求分析
a) 参考以前的成功项目
b) 实地考查
c) 向专家请教
然后产生需要分析文档
2.概要设计
a) 分析文档,对整个项目模块进行划分
根据需求分析说明书进行概要设计,为将来详细设计提供文档支持
总体设计 (设计理念/软硬件环境/约束)
用例设计 (需求用例/系统框架)
接口与类设计 (分层设计/类图)
出错处理设计 (异常设计)
维护设计(系统还原与备份)
概要设计说明书
3.详细设计
a) 对概述设计中的模块进行细化,使用数据结构和算法进行描述
根据概要设计进行详细设计,为将来程序员编码提供文档支持
模块设计
模块功能清单
IPO图
模块开发优先级
界面设计
数据库设计 (表/视图/存储过程/触发器/约束)
详细设计说明书
4.编码和测试
a) 采用你所熟悉的编程语言(客户要求)进行实现
b) 测试分类:单元测试(Junit),集成测试,系统上线
编码与测试
根据详细设计说明书进行编码和测试
程序员/软件开发工程师/高级软件开发工程师
项目整合与联合测试
项目子模块之间的拼接
系统整体测试
测试计划/测试报告
5.交互和维护
一、选择题(每题1分,共20分)1. 下列那种语言是面向对象的(C)
A. C B. PASCAL C. C++ D. FORTRAN77
2.在 Windows9x 下,可以进入 MS-D0S 方式。当在 DOS 提示符下键入 (B ) 命令后,
系统将退出 MS-DOS方式,返回到 WIndows 方式。
A. CLOSE B. EXIT C. QUIT D. RETURN
3.下面哪些是面向对象的基本特性:(A,B,C )
A 多态 B 继承 C 封装 D 接口
4.在C++中经常要进行异常处理,下面哪些是异常处理常用到的关键词:(A,B,C)
A try B catch C throw D break E contiue
5.数据库技术中的“脏数据',是指(D)的数据。
A.错误 B.回返 C.未提交 D.未提交的随后又被撤消
6.TCP/IP是一种(A,B)
A.标准 B.协议 C.语言 D.算法
7. 下面有关计算机 *** 作系统的叙述中,不正确的是( )
A *** 作系统属于系统软件
B *** 作系统只负责管理内存储器,而不管理外存储器
C UNIX 是一种 *** 作系统
D 计算机的处理器、内存等硬件资源也由 *** 作系统管理
8.微机上 *** 作系统的作用是( D)
A 解释执行源程序 B 编译源程序
C 进行编码转换 D 控制和管理系统资源
9.下列存储器中存取速度最快的是(A )
A 内存 B 硬盘 C 光盘 D 软盘
10.在计算机中,—个字节是由多少个二进制位组成的( )
A. 4 B. 8 C. 16 D. 24
11. 存储16×16点阵的一个汉字信息,需要的字节数为( )
A 32 B 64 C 128 D 256
12. 以下选项中合法的字符常量是(C)
A."B" B. '\010' C. 68 D. D
13. 假定x和y为double型,则表达式x=2,y=x+3/2的值是()
A. 3.500000 B. 3 C. 2.000000 D. 3.000000
14. 以下合法的赋值语句是()
A. x=y=100 B. d--C. x+yD. c=int(a+b)
15. 设正x、y均为整型变量,且x=10 y=3,则以下语句
pprintf("%d,%d\n",x--,--y)的输出结果是()
A.10,3 B. 9,3 C. 9,2 D.10,2
16. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()
A .INPUT x、y、zB. scanf("%d%d%d",&x,&y,&z)
C. scanf("%d%d%d",x,y,z)D. read("%d%d%d",&x,&y,&z)
17.以下数组定义中不正确的是()
A) int a[2][3]B) int b[][3]={0,1,2,3}
C) int c[100][100]={0}D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}
18. 以下程序的输出结果是()
main()
{
int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]
}
A) 0650 B) 1470 C) 5430 D) 输出值不定
19 以下程序的输出结果是()
main()
{
char st[20]= "hello\0\t\\\"
printf(%d %d \n",strlen(st),sizeof(st))
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
20. 当调用Windows API函数InvalidateRect,将会产生什么消息()
A:WM_PAINT B:WM_CREATE
C:WM_NCHITTEST D:WM_SETFOCUS
二、填空题(每题3分,共30分)
1.请列举当前一些当前流行的数据库引擎__________
2. 为了将当前盘当前目录中的所有文本文件(扩展名为.TXT)的内容打印输出,正确
的单条DOS命令为______。
3. 计算机网络分为局域网和广域网,因特网属于 广域网。
4. 设y是int型变量,请写出判断y为奇效的关系表达_______。
5. 设有以下程序:
main()
{ int n1,n2
scanf("%d",&n2)
while(n2!=0)
{ n1=n2%10
n2=n2/10
printf("%d",n1)
}
}
程序运行后,如果从键盘上输入1298;则输出结果为____。
6.以下程序运行后的输出结果是______。
main()
{ char s[ ]="9876",*p
for ( p=s pbr>}
7.以下函数的功能是:求x的y次方,请填空。
double fun( double x, int y)
{ int i
double z
for(i=1, z=xibr>return z
}
8.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调
用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE *myfling f1
myf= ______("test.t","rb")
fseek(myf,0,SEEK_END)f1=ftel(myf)
fclose(myf)
printf("%d\n",f1)
9. 以下程序输出的最后一个值是______。
int ff(int n)
{ static int f=l
f=f*n
return f
}
main()
{ int i
for(I=1I<=5I++ printf("%d\n",ff(i))
)
10. 以下程序运行后的输出结果是_____。
main()
{ int i=10, j=0
do
{ j=j+ii-
while(i>2)
printf("%d\n",j)
}
三、判断题(每题2分,共20分)
1:动态链结库不能静态调用。
2:UDP是面向无连接的网络连接
3:ASP是一种数据库引擎
4:队列是先进后出。
5:Weblogic是分布式应用服务器。
6:TCP,UDP都是传输层的协议。
7: 两个线程不能共存于同一地址空间
8: JAVA是一种跨平台的开发工具
9.在WINDOWS *** 作系统中对外设是以文件的方式进行管理
10. 虚拟内存实际是创建在硬盘上的
四、问答题(每题10分,共30分)
1. 写出从数据库表Custom中查询No、Name、Num1、Num2并将Name以姓名显示、计算出
的和以总和显示的SQL。
Select No、Name、Num1、Num2 from custom
2. 何为“事务处理”,谈谈你对它的理解。
3. 常用的数据结构有哪些?请枚举一些。(不少于5个)
4. 什么是OOP?什么是类?请对比类和对象实例之间的关系。
5. 有一组数字(3,10,6,8,98,22),请编程排序(升降序皆可),语言不限,算法不限,但须注明是何种算法。
wf11119@sina.com
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)