PHP精典面试题(附答案)
PHP精典⾯试题(附答案)
1.输出Mozilla/4.0(compatible;MISIE5.01;Window NT 5.0)是,可能输出的语句是?
A:$_SERVER['HTTP_USER_AGENT_TYPE']; B: $_SERVER['HTTP_USER_AGENT'];
C: $_SERVER['USER_ACENT'];
D: $_SERVER['AGENT'];
2.下⾯功能php⽆法实现的是?
A: 服务端脚本运⾏;
B: 命令⾏脚本运⾏; C: 客户端图形界⾯(GUI)程序; D: 浏览器执⾏DOM操作
3.下⾯说法不正确的是?
A: PHP有四种标量类型:布尔型,整型,浮点型,字符串;
B: 浮点型与双精度是同⼀种类型 C: 复合类型包括:数组,对象,资源;
D: 伪类型:混合型,数字型,回调;
4.执⾏代码后
echo function_exists('print');
>
输出的结果是? A: 空
B: true
C: false
D: FALSE
5.下⾯不是PHP语法的组成部分的函数是?
A: array
B: eval C: each
D: list
6.执⾏下⾯代码的结果是什么?
$bool = true;
echo gettype($bool);
echo is_string($bool);
> A: boolean
B: boolean0
C: booleanFalse
D: booleanfalse
7.写出下⾯程序代码执⾏结果
$a = 12;
$b = 012;
$c = 0x12;
echo $a,"\n",$b,"\n",$c;
>
A: 22 B: 10
C: 6
D: 12
8下⾯代码的执⾏结果是?
echo 1+2+"3+5+6";
>
A: 0
B: 3 C: 6
D: "33+4+5"
9.下⾯代码加⼊下⾯那个函数后返回true?
return ? == 'A';
A: ord(65) B: chr(65)
C: 65+"
D: "65+
10.下⾯代码输出正确的是?
$a = array(1=>5,5=>8,22,2=>'8',81);
echo $a[7];
echo $a[6];
echo $a[3];
>
A: 空 22 81
B: 空 81 22 C: 81 22 空
D: 空 空 空
11.下⾯代码的输出结果是?
$a[bar] = 'hello';
echo $a[bar];
echo $a['bar'];
>
A: hello
B: 空空
C: 报错 D: hello hello
12.写出下⾯代码的结果:
echo 1>>0;
echo 2>>1;
echo 3<<2;
>
A: 012
B: 106 C: 1112
D: 123
13.下⾯代码执⾏结果?
for($i=1;$i<10;$i++){
print $i;
}
>
A: 0123456789
B: 01234567890
C: ⽆输出 D: 死循环
14.下⾯对于echo,print 的描述正确的是?
A: echo,print都可以打印多个参数
B: print 可以打印多个参数,echo不可以 C: echo可以打印多个参数,print不可以
D: echo,print 都不可以打印多个参数
15.对于以下的代码
$fruits = array('strawberry'=>'red','banana'=>'yellow');
>
能够正确得到结果'yellow' 的代码是? A: echo "A banana is {$fruits['banana']}";
B: echo "A banana is $fruits['banana']"; C: echo "A banana is {$fruits[banana]}"; D: echo "A banana is $fruits[banana]";
16.下⾯代码执⾏结果是?
function change(){
static $i = 0;
$i++;
return $i;
}
print change();
print change();
>
正确答案:1,2
17.
$foo = 'test';
$bar = <<
$foo bar
EOT;
echo $bar;
>
上⾯语句输出的结果是?
A: $foo bar;
B: 'EOT' $foo bar EOT C: test bar
D: 'EOT' test bar EOT
18.
$a = 3;
$b = 4;
if($a || $b = 5){
echo 'tudou';
}
$b的值是? A: 4;
B: 5
C: 3;
D: false;
19.下⾯那个表达式不能将两个字符串$s1和$s2串联成⼀个单独的字符串? A: $s1+$s2
B: "{$s1}{$s2}"
C: $s1.$s2
D: implode(",array($s1,$s2))
E: 以上⽅法都能实现
20.下⾯的脚本运⾏以后,$array数组所包含的值是什么?
$array = array('1','1');
foreach($array as $k => $v){
$v = 2;
}
>
A: array('2','2') B: array('1','1')
C: array(2,2)
D: array(Null,Null)
21.cron后台常驻程序(daemon)⽤于?
A: 负责⽂件在⽹络中共享
B: 管理打印⼦系统Manages theprinting subsystem
C: 跟踪管理系统信息和错误 D: 管理系统⽇常任务的调度(scheduing)
22.怎么了解您在当前的⽬录下还有多⼤空间?
A: Use df B: Use du / C: Use du .
D: Use df .
23.有⼀个备份程序mybackup,需要在周⼀⾄周五下午⼀点和晚上⼋点各运⾏次,下⾯那⼀条crontab的项可以完成⼯作?
A: 0 13,20 * * 1,5 mybackup B: 0 13,20 * * 1,2,3,4,5 mybackup
C: *13,20 * * 1,2,3,4,5, mybackup
D: 0 13,20 1,5 * * mybackup
24.下⾯那条命令可以吧f1.txt复制为f2.txt ? A: cp f1.txt f2.txt
B: cat f1.txt|f2.txt
C: cat f1.txt||f2.txt
D: copy f1.txt|f2.txt
25.使⽤命令可以查看linux的启动信息?
A: mesg -d B: dmesg
C: cat /etc/mesg
D: cat /var/mesg
26.在vi 中退出不保存的命令是?
A: :qt
B: :r
C: :wq D: :q!
27.下⾯那个选项没有将john添加到users数组中?
A: $users[] = 'john'; B: array_add($users,'john');
C: array_push($users,'john'); D: $users ||= 'john';[a,c]
28.下列不属于Javascript语法关键字/保留字的是?
A: var B: $
C: functiom
D: while
29.下列不属于JavaScript DOM事件的是?
A: onclick
B: onkeydown C: onbodyload
D: onmouseover
30.下列PHP函数中不能直接在页⾯上输出字符串的函数是? A: echo B: sprintf
C: printf
31.在PHP中,'+'操作符的功能不包括 A: 字符串连接
B: 数组数据合并
C: 变量数据相加
32.⽤php获取当前时间并打印,打印格式为2006-5-10 22:21:21
echo date('Y-n-m H:i:s');
33,字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找的函数分别是什么?
字符串转数组函数:
str_split()
explode()
数组转字符串
join()
implode()
字符串截取
substr()
mb_substr()
字符串替换
str_replace()
preg_replace()
字符串查找
preg_match()
preg_match_all()
strops()
strrops()
34.解释⼀下php类中pretect,public,private,interface,abstract,final,static的含义
pretect:受保护的
public:公有的
private:私有的
interface:接⼝
abstract:抽象类或者抽象⽅法
final:最终版本的类或者⽅法
static:静态属性或者⽅法
35.如何把字符串'08/26/2004'替换成'2004-08-26'?
$date = '08/26/2004';
echo preg_replace('/(\d+)\/(\d+)\/(\d+)/',$3-$1-$2,$date);
前端常见的HTML+CSS面试题(附答案)
前端常见的HTML+CSS⾯试题(附答案)
HTML
1. 标签上title属性与alt属性的区别是什么?
alt属性是为了给那些不能看到你⽂档中图像的浏览者提供⽂字说明的。且长度必须少于100个英⽂字符或者⽤户必须保证替换⽂字尽可能的短。
这包括那些使⽤本来就不⽀持图像显⽰或者图像显⽰被关闭的浏览器的⽤户,视觉障碍的⽤户和使⽤屏幕阅读器的⽤户等。title属性为设置该属性的元素提供建议性的信息。使⽤title属性提供⾮本质的额外信息。参考《alt和title属性的区别及应⽤》
2. 分别写出以下⼏个HTML标签:⽂字加粗、下标、居中、字体
加粗:、
下标:
居中:
字体:、3. 请写出⾄少5个html5新增的标签,并说明其语义和应⽤场景
section:定义⽂档中的⼀个章节
nav:定义只包含导航链接的章节
header:定义页⾯或章节的头部。它经常包含 logo、页⾯标题和导航性的⽬录。
footer:定义页⾯或章节的尾部。它经常包含版权信息、法律信息链接和反馈建议⽤的地址。
aside:定义和页⾯内容关联度较低的内容——如果被删除,剩下的内容仍然很合理。
4. 请说说你对标签语义化的理解?
a. 去掉或者丢失样式的时候能够让页⾯呈现出清晰的结构
b. 有利于SEO:和搜索引擎建⽴良好沟通,有助于爬⾍抓取更多的有效信息:爬⾍依赖于标签来确定上下⽂和各个关键字的权重;
c. ⽅便其他设备解析(如屏幕阅读器、盲⼈阅读器、移动设备)以意义的⽅式来渲染⽹页;
d. 便于团队开发和维护,语义化更具可读性,遵循W3C标准的团队都遵循这个标准,可以减少差异化。
5. Doctype作⽤? 严格模式与混杂模式如何区分?它们有何意义?
声明位于⽂档中的最前⾯,处于 标签之前。告知浏览器以何种模式来渲染⽂档。
严格模式的排版和 JS 运作模式是,以该浏览器⽀持的最⾼标准运⾏。
在混杂模式中,页⾯以宽松的向后兼容的⽅式显⽰。模拟⽼式浏览器的⾏为以防⽌站点⽆法⼯作。DOCTYPE不存在或格式不正确会导致⽂档以混杂模式呈现。
硬件经典面试100题(附参考答案)
硬件经典面试100题(附参考答案)
TOP层的接地处理不当,导致接地环路产生了天线效应,从22.894MHz干扰源接收了电磁干扰信号,同时又作为发射天线
向外辐射能量。改进建议有:1)如果这个接地铜箔不是很必要的话,可以删除;2)沿着这个铜箔,每隔1~2cm打过孔到内层
接地。
99、请将下面的DATASHEET内容翻译成中文。
ThismanualdescribesSAMSUNG''sS3C2410A16/32-bitRISCmicroprocessor.Thisproductis
designedtoprovidehand-helddevicesandgeneralapplicationswithcost-effective,low-power,and
high-performancemicro-controllersolutioninsmalldiesize.Toreducetotalsystemcost,theS3C2410A
includesthefollowingcomponentsseparate16KBInstructionand16KBDataCache,MMUtohandlevirtual
memorymanagement,LCDController(STN&TFT),NANDFlashBootLoader,SystemManager(chip
selectlogicandSDRAMController),3-chUART,4-chDMA,4-chTimerswithPWM,I/OPorts,RTC,8-ch
10-bitADCandTouchScreenInterface,IIC-BUSInterface,IIS-BUSInterface,USBHost,USBDevice,SD
Host&Multi-MediaCardInterface,2-chSPIandPLLforclockgeneration.
简单算法面试题(附自己的答案)
简单算法⾯试题(附⾃⼰的答案)
这是我最近看到的⾯试题,想⾃⼰写⼀下试试,真学渣。我只是把简单功能实现了,希望⼤家教教我怎么可以把命名以及结构规范化起来。
1. 给定两个字符串a和b(长度超过100w),在字符类型上b是a的⼦集,求b在a字符类型上的补集;(本题我认为应该可以忽略对于输⼊的
判断)
a='abcdefgcdeh'
b='cde'
c=[]
#以上定义ab的值,定义c序列是为了保存匹配正确的初始位置值,主要是防⽌a中有多个b的⼦序列
for i in range(len(a)-len(b)+1):#定义匹配的起始位置
index=i
print("***"+str(i))
for j in range(len(b)):
if b[j]!=a[index]:
break
else:
index=index+1
if j==len(b)-1:
c.append(i) #将匹配成功的位置加⼊c中
d=[]
for k in c:
d+=[k+m for m in range(len(b))] #d序列是匹配成功的⼦集位置
print(d)
for i in range(len(a)):
if i not in d: #匹配不在序列d内的字符串
print(a[i])
2.给定正整数N, 返回⼩于等于N且⾄少有⼀位重复数字的正整数的个数;
N=int(input('N:'))
num=0
if N<11:
print(num)
else:
for i in range(N+1):
a={}
i=str(i)
for j in range(len(i)):
if i[j] in a:
num+=1
break
else:
a.update({i[j]:0})
print(num)
3.电话号码组合。下图是⼀个⼿机按键的样例,每⼀个数字包含⼀些字母。⽐如字母“A”可以通过按⼀次“2”得到,字母“B”可以通过按两
次“2”得到,以此类推。当给定⼀个数字字符串,我们也可以得到相应的映射,⽐如“22”, 代表字母组成的可能性是[“AA”, “B”]。要求:输⼊为
精心整理110道Python面试题(附答案)
精⼼整理110道Python⾯试题(附答案)
整理了⼀些Python⾯试题和⾯试简历,如果需要,可以参考学习
扫描下⽅公众号回复:⾯试,即可获取⾯试题答案
程序员资源社区
具体⾯试题如下:
1、⼀⾏代码实现1--100之和
2、如何在⼀个函数内部修改全局变量
3、列出5个python标准库
4、字典如何删除键和合并两个字典
5、谈下python的GIL
6、python实现列表去重的⽅法
7、fun(*args,**kwargs)中的*args,**kwargs什么意思?8、python2和python3的range(100)的
区别8、python2和python3的range(100)的区别
9、⼀句话解释什么样的语⾔能够⽤装饰器?
10、python内建数据类型有哪些
11、简述⾯向对象中__new__和__init__区别
12、简述with⽅法打开处理⽂件帮我我们做了什么?
13、列表[1,2,3,4,5],请使⽤map()函数输出[1,4,9,16,25],并使⽤列表推导式提取出⼤于10的数,
最终输出[16,25]14、python中⽣成随机整数、随机⼩数、0--1之间⼩数⽅法
15、避免转义给字符串加哪个字母表⽰原始字符串?
16、
是不确定的17、python中断⾔⽅法举例
18、数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复⾏,
请写sql语句19、10个Linux常⽤命令
20、python2和python3区别?列举5个
21、列出python中可变数据类型和不可变数据类型,并简述原理
22、s = 'ajldjlajfdljfddd',去重并从⼩到⼤排序输出'adfjl'
23、⽤lambda函数实现两个数相乘24、字典根据键从⼩到⼤排序
25、利⽤collections库的Counter⽅法统计字符串每个单词出现的次
数'kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h'26、字符串a = 'not 404 found 张三 99 深圳',每个词中间是空格,⽤正则过滤掉英⽂和数字,
Java面试题附答案合集(腾讯、阿里、字节跳动、百度、美团)
Java⾯试题附答案合集(腾讯、阿⾥、字节跳动、百度、美
团)
这些⾯试题都是互联⽹⼤⼚真实流出的⾯试内容,每个问题都附带完整详细的答案,不像⽹上的那些资料三教九流有的甚⾄
还没答案,这些⾯试题我也是经过⽇积⽉累才整理出来的精品资料。
这些⾯试题主要是针对1-5年左右的Java开发程序员提升的,不管是传统⾏业还是互联⽹⾏业,掌握这些技术基本都能拿到
⼀个不错的薪资,希望对⼤家有所帮助。
⾯试真题-按知识点划分
1. Java语法基础⾯试专题及答案:pdf
2. Java集合_⾯试专题及答案.pdf
并发编程
1. 并发编程及答案(上) .pdf
2. 并发编程⾯试题整理(答案)
3. 并发编程⾯试专题及答案(上) .pdf
4. 并发编程⾯试专题及答案(下) .pdf
5. 并发编程⾯试专题及答案(下) .pdf
JVM
1. JVM⾯试专题及答案(上) .pdf
2. JVM⾯试专题及答案(下) .pdf
3. ⾯试必问之jvm与性能优化.pdf
MySQL
1. MySQL_⾯试专题及答案(上) .pdf
2. MySQL_⾯试专题及答案(下) .pdf
3. Memcached⾯试专题及答案pdf
4. SQL优化⾯试专题及答案.pdf
5. MongoDB_⾯试专题及答案.pdf
Redis
1. Redis⾯试专题及答案(上) .pdf
2. Redis.⾯试专题及答案(下) .pdf
3. redis⾯试题及答案(上) .pdf
4. Redis⾯试专题及答案(下) .pdf
5. Redis常问的40道⾯试题(答案)
MyBatis
1. MyBatis⾯试专题
2. Mybatis缓存pdf
3. Mybatis插件.pdf
4. Mbais相关概含.pdf
5. Mbatis基本应⽤.pdf6. Mbais注解开发.pdf
7. Mybatis架构原理pdf
8. Mbais配置⽂件深⼊.pdf
9. Mbais复杂映射开发.pdf
10. MyBatis⾯试专题及答案.pdf
这是我见过最有用的Mysql面试题,面试了无数公司总结的(内附答案)
这是我见过最有用的Mysql面试题,面试了无数公司总结的(内附答案)
1.什么是数据库?
•
•
数据库是组织形式的信息的集合,用于替换,更好地访问,存储和操纵。也可以将其定义为表,架构,视图和其他数据库对象的集合。
2.什么是数据仓库?
•
•
数据仓库是指来自多个信息源的中央数据存储库。这些数据经过整合,转换,可用于采矿和在线处理。
3.什么是数据库中的表?
•
表是一种数据库对象,用于以保留数据的列和行的形式将记录存储在并行中。
4.什么是数据库中的细分?
•
数据库表中的分区是分配用于在表中存储特定记录的空间。
5.什么是数据库中的记录?
•
记录(也称为数据行)是表中相关数据的有序集合。
6.什么是表中的列?
•
列是表中的垂直实体,包含与表中特定细分关联的所有信息。
7.什么是DBMS? •
数据库管理系统是程序的集合,使用户能够存储,检索,更新和删除数据库中的信息。
8. DBMS的类型是什么?
•
•
•
DBMS有两种类型:1.关系数据库管理系统(RDBMS)2.非关系数据库管理系统
9.什么是RDBMS?
•
•
•
RDBMS代表- [R elational d atabase中号anagement小号ystem。RDBMS是基于关系模型的数据库管理系统(DBMS)。可以使用结构化查询语言(SQL)访问关系数据库中的数据
10.在IT行业中流行的数据库管理系统是什么?
•
•
Oracle,MySQL,Microsoft SQL Server,PostgreSQL,Sybase,MongoDB,DB2和Microsoft Access等,
11.什么是SQL?
•
•
•
•
SQL概述:SQL代表结构化查询语言。它是美国国家标准协会(ANSI)的标准。它是用于访问和操作数据库的标准语言。使用SQL,我们可以做的一些动作是创建数据库,表,存储过程(SP),执行查询,针对数据库检索,插入,更新,删除数据。
阿里电话面试题(附答案)
阿⾥电话⾯试题(附答案)
嗯,⾸先接到阿⾥电话⾯试的不是我(伤⼼),其次这个是我看到别⼈分享的⾯试题,但是我觉得挺有意义的,所以这⾥我⾃⼰作答了下,
顺便分享⼀下,与诸君共勉,如果有错误的地⽅请指正,谢谢。
线程问题
问题⼀:多线程的实现⽅式有哪些?
回答:多线程的实现⽅式主要有两种,⼀种是继承Thread类,⼀种是实现Runnable接⼝,不论是继承还是实现,线程业务代码都是写在run
⽅法⾥,然后在运⾏处new出线程,然后调⽤start⽅法,启动线程。这⾥要注意⼀下,不能直接调⽤run⽅法,这种相当于是直接调⽤对象的
⽅法,不是启动多线程;然后调⽤start⽅法,启动多线程,相当于是线程处于就绪状态,当CPU分配的时间⽚给它时,它才运⾏。
还有四种变形实现⽅式:实现内部类的⽅式,定时器⽅式,带返回值的线程实现,基于线程池的实现。当然这⾥的四种⽅式都是基于上⾯两
种的变形
问题⼆:线程死锁的原因?
回答:
造成死锁的主要原因:1、系统资源不⾜
2、进程运⾏的推进顺序不合适
3、资源分配不当
造成死锁的四个条件:1、互斥条件
2、占有且申请
3、不可强占
4、循环等待条件
解决办法:1、死锁预防:通过设置某些限制条件,去破坏死锁的四个条件中的⼀个或⼏个条件,来预防发⽣死锁。但由于所施加的限制条件往往太严
格,因⽽导致系统资源利⽤率和系统吞吐量降低。2、死锁避免:在资源分配过程中若预测有发⽣死锁的可能性,则加以避免。这种⽅法的关键是确定资源分配的安全性。
3、死锁检测与恢复:不须实现采取任何限制性措施,⽽是允许系统在运⾏过程发⽣死锁,但可通过系统设置的检测机构及时检测出死锁的
发⽣,并精确地确定于死锁相关的进程和资源,然后采取适当的措施,从系统中将已发⽣的死锁清除掉。
问题三:线程池的⼯作原理?底层⽅法的参数分别是什么意思?
回答:
⼯作原理:1、当有新任务来时,线程池判断核⼼线程池⾥的线程是否都在执⾏任务。如果不是,则创建⼀个新的⼯作线程来执⾏任务。如果核⼼线程
初、中、高级测试工程师面试题汇总(附答案)
初、中、⾼级测试⼯程师⾯试题汇总(附答案)
【热⾝题】
1.为什么选择测试这⾏?
因为其具有挑战性和成就感,找⼀些系统隐藏的逻辑漏洞的时候,⾃⼰就⾮常的开⼼。并且测试需要细⼼和耐⼼,⾃⼰可以很快的分析bug
的来源。
2.请描述下你公司的测试流程?
需求分析讨论-确定测试策略-设计测试⽤例-测试⽤例评审-beta测试-uat测试-测试报告
【基础题】
1.软件测试项⽬从什么时候开始为什么?
需求确认开始,因为在需求阶段,测试可以评审需求并进⾏静态测试,减少开发过程中的bug。
2.软件的评审⼀般由哪些⼈员参加?其⽬的是什么?
参加⼈员:需求业务⼈员、产品经理、项⽬经理、开发⼈员、测试⼈员;
⽬的:查看软件在未正式投⼊运⾏前是否还存在问题。对于不同软硬件平台能否正常运⾏,是否有与客户理解不⼀致的地⽅,同时可以对⼀
些可以改进的地⽅再多加改进。
3.如何设计测试⽤例?什么样⼦的测试⽤例是好⽤例?
掌握边界值分析、等价类划分、错误推测等⽅法来设计测试⽤例。
好⽤例是⼀个完备的集合,它能够覆盖所有等价类以及各种边界值;需要从软件功能需求出发,全⾯地,⽆遗漏地识别出测试需求;最好是
代码覆盖测试也全⾯的测试。
4.不能发现BUG的测试⽤例不是好的测试⽤例吗?
不⼀定,要看情况,如果测试⽤例质量⾼,没有发现bug,说明开发质量⾼。但⼀般程序都会有bug,如果没有发现BUG,就要思索测试场
景是否有遗漏,需求是否理解没到位。
5.测试⽤例需要哪些⼈来评审?
产品经理,开发⼈员,测试⼈员,业务需求⼈员。
6.什么是bug?
没有实现需求说明书列出的功能,出现了没有需求说明书提到不该出现的事情;实现了多的功能;没有实现应该实现的逻辑。
7.简单概述缺陷报告,并说明包括哪些项?
缺陷描述,缺陷的优先级,缺陷的标题,缺陷所属版本号,缺陷所属的功能模块,操作步骤,预期效果,缺陷原因,缺陷所属的开发⼈员。
8.开发⼈员修复缺陷后,如何保证不影响其他功能?
重新执⾏测试⽤例,并且针对这个缺陷影响的相关点写新的测试⽤例。
收藏微软面试智力题(附答案)
收藏微软⾯试智⼒题(附答案)
A.逻辑推理
1、你让⼯⼈为你⼯作7天,给⼯⼈的回报是⼀根⾦条。⾦条平分成相连的7段
,你必须在每天结束时给他们⼀段⾦条,如果只许你两次把⾦条弄断,你如何给你
的⼯⼈付费?
2、请把⼀盒蛋糕切成8份,分给8个⼈,但蛋糕盒⾥还必须留有⼀份。
3、⼩明⼀家过⼀座桥,过桥时是⿊夜,所以必须有灯。现在⼩明过桥要1秒,
⼩明的弟弟要3秒,⼩明的爸爸要6秒,⼩明的妈妈要8秒,⼩明的爷爷要12秒。每
次此桥最多可过两⼈,⽽过桥的速度依过桥最慢者⽽定,⽽且灯在点燃后30秒就会
熄灭。问:⼩明⼀家如何过桥?
4、⼀群⼈开舞会,每⼈头上都戴着⼀顶帽⼦。帽⼦只有⿊⽩两种,⿊的⾄少
有⼀顶。每个⼈都能看到其他⼈帽⼦的颜⾊,却看不到⾃⼰的。主持⼈先让⼤家看
看别⼈头上戴的是什么帽⼦,然后关灯,如果有⼈认为⾃⼰戴的是⿊帽⼦,就打⾃
⼰⼀个⽿光。第⼀次关灯,没有声⾳。于是再开灯,⼤家再看⼀遍,关灯时仍然鸦
雀⽆声。⼀直到第三次关灯,才有劈劈啪啪打⽿光的声⾳响起。问有多少⼈戴着⿊
帽⼦?
5、请估算⼀下CN TOWER电视塔的质量。
6、⼀楼到⼗楼的每层电梯门⼝都放着⼀颗钻⽯,钻⽯⼤⼩不⼀。你乘坐电梯
从⼀楼到⼗楼,每层楼电梯门都会打开⼀次,只能拿⼀次钻⽯,问怎样才能拿到最
⼤的⼀颗?
7、U2合唱团在17分钟内得赶到演唱会场,途中必需跨过⼀座桥,四个⼈从桥
的同⼀端出发,你得帮助他们到达另⼀端,天⾊很暗,⽽他们只有⼀只⼿电筒。⼀
次同时最多可以有两⼈⼀起过桥,⽽过桥的时候必须持有⼿电筒,所以就得有⼈把
⼿电筒带来带去,来回桥两端。⼿电筒是不能⽤丢的⽅式来传递的。四个⼈的步⾏
速度各不同,若两⼈同⾏则以较慢者的速度为准。Bono需花1分钟过桥,Edge需花 2分钟过桥,Adam需花5分钟过桥,Larry需花10分钟过桥。他们要如何在17分钟内
过桥呢?
8、烧⼀根不均匀的绳要⽤⼀个⼩时,如何⽤它来判断半个⼩时 ?
纯干货分享!2020阿里java岗笔试面试题总结(附答案)
纯⼲货分享!2020阿⾥java岗笔试⾯试题总结(附答案)
前⾔
2020⾦九银⼗马上结束,现为⼤家整理了这次⾦九银⼗⾯试阿⾥的⾯试题总结,都是我从朋友那拿到的⾯试真题,话不多说,满满的⼲货分
享给⼤家!
int a=10是原⼦操作吗?
是的。
注意点:
i++(或++i)是⾮原⼦操作,i++是⼀个多步操作,⽽且是可以被中断的。i++可以被分割成3步,第⼀步读取i的值,第⼆步计算i+1;第三
部将最终值赋值给i。
* int a = b;不是原⼦操作。从语法的级别来看,这是也是⼀条语句,是原⼦的;但是从实际执⾏的⼆进制指令来看,由于现代计算机
CPU架构体系的限制,数据不可以直接从内存搬运到另外⼀块内存,必须借助寄存器中断,这条语句⼀般对应两条计算机指令,即将
变量b的值搬运到某个寄存器(如eax)中,再从该寄存器搬运到变量a的内存地址:
mov eax, dword ptr [b]
mov dword ptr [a], eax
既然是两条指令,那么多个线程在执⾏这两条指令时,某个线程可能会在第⼀条指令执⾏完毕后被剥夺CPU时间⽚,切换到另外⼀个线程⽽
产⽣不确定的情况。
innodb⽀持全⽂索引吗?
5.6版本之后InnoDB存储引擎开始⽀持全⽂索引,5.7版本之后通过使⽤ngram插件开始⽀持中⽂。之前仅⽀持英⽂,因为是通过空格作为分
词的分隔符,对于中⽂来说是不合适的。MySQL允许在char、varchar、text类型上建⽴全⽂索引。
innodb⽀持表锁吗?
⽀持,补充:普通的增删改 是表锁,加⼊索引的增删改是⾏锁,执⾏查询时不加任何锁的。
HTTP短连接怎么变成长连接。
在header中加⼊ --Connection:keep-alive。
调⽤yeild()会阻塞吗?
阻塞指的是暂停⼀个线程的执⾏以等待某个条件发⽣(如某资源就绪)。
yield() ⽅法:yield() 使得线程放弃当前分得的 CPU 时间,但是不使线程阻塞,即线程仍处于可执⾏状态,随时可能再次分得 CPU 时间。
