这几天遇到的一些面试题

1.有8瓶药,只有唯一的一瓶药有效果,生效时间为两小时,如何用最少的试药人在两小时内找到这瓶药。

首先想到的是最多肯定是7个人。
然后看题大概是一个人要吃几瓶药,才能减少人数,排列组合?
通过几次试着写,发现4个人可以解决,在写的时候感觉有点像组合
大概就是不同人的组合标记一种药,人数的不同的不同组合。
然后就想到了二项式分布。
    8 = 2^3 = C(0,3) + C(1,3) + C(2,3) + C(3,3)
    将8瓶药标记为A,B,C,D,E,F,G,H
    C(1,3)对应3个人没人吃一种不一样的药,(1,A),(2,B),(3,C)
    C(2,3)对应每两个人吃一种不一样的药,(1.2,D),(1.3,E),(2.3, F)
    c(3,3)表示3个人吃同一种药,(1,2,3. G)
    c(0,3)表示有一种药没人吃。
综合上面
    1 ADEG
    2 BDFG
    3 CEFG
所以答案就是3

2.今天做笔试遇到一道比较扯的题。

题目给了一个结构体,名字记不起了,假设为SC,然后又给了一个结构体数组。大概内容如下

struct SC{
    char* String
    int Code;
};
SC auString2Number[] = {
    {"abc", 0x10},
    {"abd", 0x11},
    ...
    {null, 0},
    ...
    {"zzz", 0x80}
};

叫你实现函数int getCode(char* string);
用二分查找实现,给你一个字符串,叫你返回它的Code,没找到返回-1.
结构体数组除开里面的所有的{null,0},是按照字典顺序升序的,里面混杂了一些{null,0}.

  • 第一步

    • 确定该结构体数组的长度,通过观察可以发现,code值是递增的,当然是除开那些捣乱的{null,0}, 得到一个大概长度,就可以开始遍历数组,如果是null,就把size+1,(for(int i = 0; i < size; ++i)),就得到了数组的长度。
  • 然后就可以开始写二分查找了。

    • 编写自己的字符串比较函数,因为题目明确要求不能使库函数
      然后是二分查找了,在查找中如果我定义mid1,mid2,最开始mid1=mid2,然后先mid1向左遍历,直到mid1所指向的结构体的String!=null,mid2向右遍历。
      判断给定的string和mid1指向的string的情况,不比mid1小,在比较mid2和string的情况。

3.一道选择题,问TCP连接断开,程序的网络的状态转移过程

-题记不清了,不过我找到了一张图
TCP状态转移

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值