有趣的面试题

之前在知乎上看到了一个关于30道Google面试题的帖子,感觉很有意思,在这里比题和答案找出来,进行记录也方便又兴趣的朋友一起讨论。题目转自知乎,

作者:路人甲 https://zhuanlan.zhihu.com/p/24756529


第一题

为什么井盖是圆的?

这个问题算是一个发散性思维的问题,没有具体的答案,而且很多都在说井盖并不一定都是圆的,以下链接有着很多人充分讨论,感觉是理查德·范曼在微软面试时回答这个问题的情况那个答案挺有意思的。

https://www.zhihu.com/question/19678960

第二题

互斥体和信号量之间有什么区别? 你将使用哪一个来保护对增量操作的访问?

1. 互斥量用于线程的互斥,信号量用于线程的同步。

 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

2. 互斥量值只能为0/1,信号量值可以为非负整数。

3. 互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。

信号量举例:

 

信号量:

儿子: 是否有苹果,s1 = 0

女儿: 是否有桔子,s2 = 0

爸妈: 是否可以放水果,s3 = 3

爸:                          妈:                     儿子:                      女儿:

makeit()               makeit()              P(s1)                    P(s2)                               

P(s3)                    P(s3)                  getit()                   getit()                                    

putit()                   putit()                 V(s3)                   V(s3)                                           

V(s1)                    V(s2)                   eatit()                  eatit()

第三题

一个人把他的车推到了酒店里面,然后他失去了财富,发生了什么?

 

posted @ 2017-01-16 01:04  东东Donny  阅读(635)  评论(0编辑  收藏  举报