腾讯面试题

腾讯面试题:

  1. 智力题:
    25 匹马,5条赛道,无计时工具,比出前三名最少需要多少场比赛?
    推算:5次
    牛客上小白鼠式有毒药水的题(LeetCode 458.PoorPigs)
    有1000只水桶,其中有且只有一桶装有含有毒药,其余装的都是水。他们从外观看起来都一样。如果小猪喝了毒药会在15分钟内死去。
    问:如果在一小时类,弄清楚哪只水桶有毒,最少需要多少只猪。

    回答这个问题并为下列的进阶问题编写一个通用算法。

    进阶:假设有n只桶,猪饮水中毒后会在m分钟内死亡,你需要多少只猪就能在p分钟内找出有毒的水桶桶?

    解答:
    基础:假设使用x只猪,喝毒药后会在15分钟后死亡,给一个小时的时间,说明同一批猪如果没死,可以测四次,
    将1000只桶分为四份,如果第一批水有毒,则x只猪可以直接测出,如果没毒,x只猪没有死亡,继续用来测下一批水,
    可知,实际要测桶的数量只有1000/(60/15)=250。

    此问题实际是将猪作为二进制地址,找到存有毒的那只水桶的地址,弄清楚思路就好做了:
    将猪进行边号1x,桶用二进制数做编号,0000000011111010(250)
    按照桶的编号给朱和水,第一桶水由第一只猪喝,第二桶水由第二只猪喝,第三桶水由第一只和第二只喝。。。。。
    15分钟后,死亡的猪编号做1,没有死的猪编号做1,转换为十进制,就知道哪桶水有毒了,
    按照以上思路,最少需要满足2^X>=250,故需要8只猪。

    进阶:n只桶,实际每次测的数量只有n/(p/m)或者n/(p/m)+1个
    实际用猪数量为 2^x>=n/(p/m)+1 或 2^x>=n/(p/m)
    x = (n/(p/m)+1)^(1/2) 或(n/(p/m))^(1/2) 只

开放问题:
一堆服务器组织成完全图,能够互相 Ping, 找出测节点之间延迟的方式,要求 Ping 包数目尽可能少,而且各个节点流量尽可能均匀。

OS:Linux 进程间通信方式(信号量,管道,套接字,共享内存,消息队列, 信号),怎么保证进程只有一个实例(进程表扫描,pid 文件,文件锁,端口锁定)。

MySQL 索引数据结构(B+树),为啥不用 Hash / 二叉树。

算法题:二叉树深度,递归非递归两种方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值