• 一些小技巧的面试题


    1、实现一个函数int sign(INT32 x),对x>0返回1;x==0返回0;x<0返回-1。不允许用任何形式的判断,分支,跳转指令或语句。

         (1)   return  x*2/(|x|+1)。

                    缺点是有溢出的风险,x的值不能太大。或者将X转化成64位的值来临时存储处理。

         (2)  return (x>0) - (x&0x80000000 == 0x800000000)。

                    这个依赖于bool和整形之间的转换,不知道true转换成1是不是c/c++标准定义。

    2、a,b不进行比较,输出最大,最小值。

         (1)  int max(int a, int b) :  return (a+b+abs(a-b))/2;

               int min(int a, int b) : return (a+b-abs(a-b))/2;

         (2) 如果ab皆为正整数的话:

              max(a,b):   int array[2] = {a,b}; return array[b/a];

              min(a,b):    int array[2] = {a,b}; return array[a/b];

    3 、只允许使用一个循环先输出1至10内的奇数然后输出其中的偶数结果应该是这样的:135792468

          (1) for (int i=0; i<9; i++)

              {

               int a = 2*i+1;

               if (a <= 9 )

                   cout<<a%10

               else

                   cout<<a%9

              }

          (2)for (int i=1; i<10; i+=2)

              {

               count i;

               if (i==9) i = 0;

              }

    4、求除8余数的简化方法

          a&7; 对于 b=2的冥,求a处以b的余数都可以用 a&(b-1)

    2、(迅雷笔试题)迅雷进行一个活动,这个活动需要客户端访问我们服务器。但活动为了限制访问量,做了如下规定,那就是每一个帐户在3600秒内只能参加不多于5次。请 实现类c_user_enabled,完成此限制功能。
    类接口定义:
    Class c_user_enabled
    {
    Public:
    Bool init();
    Bool is_user_enabled(string user_name);// user_name表示用户帐户标识
    Bool destroy();
    };

    附:
    需要考虑线程安全
    可以使用stl.
    可以使用如下的一个hash函数:
    Unsigned str_hash(string str);
    可以使用如下锁:
    Class c_lock
    {
    Public:
    Void lock();
    Void unlock();
    Private:
    …;
    };

    1.假设电信每分钟登录次数是60w次,现在要提醒5分钟内重复登录的用户,如何设计程序缓存和查找算法?

    2.QQ数据库的用户信息表现 在有5亿多条记录,现在请给出怎么样设计,使通过QQ号码查询QQ用户信息的速度更快。。用怎么样的算法算出查询大概需要多少的系统开销。

    3. 到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少?

  • 相关阅读:
    优先队列(堆)
    从CPU管理到进程的引入
    倾听程序员
    数据库设计
    数据库设计之数据库,数据表和字段等的命名总结
    Set容器--HashSet集合
    Java Collection开发技巧
    关于事务
    关于触发器
    windows phone(成语典籍游戏开发)
  • 原文地址:https://www.cnblogs.com/longhuihu/p/10423415.html
Copyright © 2020-2023  润新知