范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

巧用bitmap算法解开腾讯面试题43亿QQ号码用完后怎么办?

  最近有读者提问:听说腾讯QQ号码的理论最大值是43亿左右,那么用完后会怎样呢?
  今天,来聊一聊与腾讯QQ号码相关的三个问题,相信大家会有一个比较完整的认识。 QQ号的范围是多少? QQ号用完后会怎样? QQ号和bitmap渊源?
  关于第一个问题,看完如下的有趣动图之后,肯定就会知道QQ号的最小值和最大值。
  一. QQ号的范围是多少?
  相信多数朋友都用过QQ,不过估计有些人很久没登录过了。你还记得自己的QQ号码吗?你知道QQ号码有多少位数吗?你知道QQ号码的大小范围吗?
  别着急,我们会一一来解答。大家的微信号是字符串形式的,带有一些数字和字母,但QQ号是纯数字。在腾讯QQ后台的程序中,经常看到这样的代码: unsigned int uin = getFromCookie(cookie, "uin") ; if ( uin < 10001 ) {    log.Error("invalid uin %u", uin) ;    return INVALID_UIN ; }
  从这段简单的代码中,我们可以看出很多端倪。其中uin指代的就是QQ号码,有人说uin是unsigned int的缩写,有人说是user ID number的缩写。
  不管怎样,uin表示的就是QQ号码,且是unsigned int类型,故QQ号就是4字节无符号整数,共32bit, 也就是说,QQ号的取值范围是:[0, 2^32 - 1]
  然而,这只是理论情况,从上面代码的判断可知,QQ号码的最小值是10001, 为什么腾讯要做这种限制呢?其实没有为什么,仅仅是早期的一个设定而已。
  对于QQ号码而言,从10001开始,号越小,就大致表明申请时间越早,是一个尊贵号。那么,10001是谁的QQ号呢?很容易猜,不过他实际不用这个号。
  2^32 - 1 的值是4294967295, 是一个10位的整数,大约是43亿,这就是QQ号码的理论最大值,你肯定没有见过11位的QQ号,至少目前是不可能存在的。
  到目前为止,大家肯定就能理解下图中的数字含义了。在后续面试腾讯时,如果再问到QQ号码相关的问题,一定要意识到QQ号码的大小范围,会有帮助的。
  二. QQ号用完后会怎样?
  既然QQ号码的值是有范围的,那么自然有疑问:如果这么多QQ号码都被申请完后,结果会怎样呢?这是一个有趣的问题,但别替腾讯担心这些根本问题。
  对于很多互联网公司而言,账号体系就是生命线,对腾讯尤其如此。最近几年,微信的势头超过QQ, QQ的月活远低于10亿,注册了的QQ也远小于43亿个。
  所以,完全不用担心QQ号会超过43亿,在相当长的一段时间内,43亿是达不到的。而且,腾讯现在做了各种限制,并不会允许一个人无限地注册QQ号码。
  另外,如果一个QQ号被注册了,但长期不登录,那么就相当于占着茅坑不拉屎,浪费资源。此时,腾讯也会考虑对QQ号进行回收,具体的逻辑就不说了。
  然而,凡事总有万一,如果有一天QQ号码突破了43亿,那也可以,对腾讯来说,意味着业务蓬勃发展,也是好事。那么,QQ后台很多代码就需要重构了。
  三. QQ号和bitmap渊源
  在腾讯的面试题中,经常以QQ号码为背景进行考察。比如典型题目:文件中有40亿个QQ号码,如何进行去重?
  如果没有敏感意识到使用bitmap,就是很糟糕很不应该的事情,说明基本没有好好去准备啊。bitmap图解如下:
  unsigned char共8位,取值范围是[0, 255],这个unsigned char的数值是255,能标识0~7这些数字都存在。
  同理,如下这个unsigned char类型的值是254,它对应的含义是:1~7这些数字是存在的,而数字0是不存的:
  由此可见,一个unsigned char类型的数据,可以标识0~7这8个整数的存在与否,这是很好理解的,以此类推: 一个unsigned int类型数据可以标识0~31这32个整数的存在与否。 两个unsigned int类型数据可以标识0~63这64个整数的存在与否。
  说白了,也就是4B的内存,可以标识32个整数的存在与否。如果还不清楚的话,我来画个表格,逐步推演一下:
  由此可见,512MB的内存大小,刚好可以用来标识所有的QQ号码的存在与否,一切迎刃而解。下面,我们看一下bitmap的程序,很好懂,也很实用,轻轻松松地实现了标记功能,顺便去重。 #include  #include  #include  using namespace std;   #define N 20  // 考究0~19这20个数字 #define SHIFT 5 #define MASK 0x1f unsigned int a[1 + N / 32] = {0};    // 设置第i位为1, 让它处于点亮状态 void setOne(int i) {   a[i >> SHIFT] |= (1 << (i & MASK)); }   // 设置第i位为0, 让它处于熄灭状态 void setZero(int i) {   a[i >> SHIFT] &= ~(1 << (i & MASK)); }   // 获取第i位的状态 int getState(int i) {   return (a[i >> SHIFT] & (1 << (i & MASK))) && 1; }   int main(void)  {   // 把1,3,1,4,9,9,9这几个值的状态点亮,即状态为1   setOne(1);    setOne(3);   setOne(1);   setOne(4);   setOne(9);   setOne(9);   setOne(9);     int i = 0;   for(i = 0; i < N; i++)   {     cout << i << "对应的状态为:--->" << getState(i) << endl; // 获取状态   }   cout << endl;     return 0; }
  编译运行一下,结果为: 0对应的状态为:--->0 1对应的状态为:--->1 2对应的状态为:--->0 3对应的状态为:--->1 4对应的状态为:--->1 5对应的状态为:--->0 6对应的状态为:--->0 7对应的状态为:--->0 8对应的状态为:--->0 9对应的状态为:--->1 10对应的状态为:--->0 11对应的状态为:--->0 12对应的状态为:--->0 13对应的状态为:--->0 14对应的状态为:--->0 15对应的状态为:--->0 16对应的状态为:--->0 17对应的状态为:--->0 18对应的状态为:--->0 19对应的状态为:--->0
  QQ号码和bitmap的渊源就是如此,以后在面试时,不可忽视bitmap的妙用哦,也希望大家看完这篇文章后,有所收货,心情愉快。
  来源:https://mp.weixin.qq.com/s?__biz=MzU2NTEyNjIzMw==&mid=2247488299&idx=1&sn=b53d3a768426e0d0b5ff547767e5ba53&utm_source=tuicool&utm_medium=referral

米兰达可儿都不会老吗?穿蓝色花裙亮相太嫩,39岁嫩如18岁好羡慕米兰达可儿真是太冻龄了,如今大儿子都11岁了,而她自己却嫩得如同18岁一样。日前,可儿为金大姐考特尼卡戴珊的新品牌助阵,当天的可儿一身蓝色的公主裙亮相,又把人惊艳到了。一可儿穿蓝色重大回暖信号!9月超1。5万亿元基建项目密集开工根据基建通大数据统计9月1日9月15日,全国开工的重大基建项目约16个,共计总投资约2085亿元,包括公路水利市政产业园等。其中,2个项目总投资超200亿!9月16日9月30日,全HPLY荷比俪2022AW以温柔色彩探索她力量近日,当代时尚女装品牌HPLY荷比俪发布2022全新秋冬系列陪你轻灵,以温柔色彩摩登设计探索表达她力量的多元方式,为现代女性在喧嚣都市中开辟出一方方可以畅然呼吸的轻灵空间。HPLY印度5G下载测试速度达500MbpsIT之家10月11日消息,印度的5G下载速度在测试网络上已经触及500Mbps。在德里地区,Jio的表现比Airtel好,前者速度为598。58Mbps,后者速度为197。98MbCBA官方广东男篮因自身原因缺席比赛被判020负于北控北京时间10月11日,CBA发布官方公告,由于广东男篮未能及时抵达赛区出战同北控的比赛,这场比赛的结果宣判北控男篮以200的比分获胜。CBA常规赛首轮展开较量,按照预定的赛程,广东欧冠比尔森VS拜仁近期四中三,昨天切尔西也是不负众望成功打出!实力绝非偶然!当比尔森被分到死亡之组的那一刻,包括他们在内的所以人都清楚,这次欧冠小组赛自己只能是个过客。当然他们能闯入这次欧冠正赛本就歌尔股份研究报告ARVR前景广阔,风好正是扬帆时(报告出品方作者光大证券,刘凯蔡微未)1歌尔股份全球领先的声光电产品及解决方案提供商1。1深耕声学领域二十余载,积极外延形成零件成品广域布局歌尔股份为全球领先声光电产品及解决方案提为何,莎不进亚洲杯10月10日,国际乒联官网公布了2022年乒乓球亚洲杯参赛名单。中国男队的参赛选手为梁靖崑王楚钦,女队的参赛选手为陈幸同王艺迪。比赛将于11月17日至19日在泰国曼谷举行。而此前受索内斯我都忘记之前执教曼联的德国人叫什么了,很多人都忘了直播吧10月11日讯索内斯认为朗尼克在曼联的短暂任期碌碌无为,以至于他在周一的播客中甚至忘记了德国人的名字。他也提醒滕哈赫,要充分发挥现有球员的实力。索内斯说滕哈赫凭借严明的纪律和德媒拜仁中锋引援首选凯恩,同时关注门兴的小图拉姆并正在考察直播吧10月11日讯德国媒体sport1消息称,拜仁正为2023年夏天引进一名中锋而探索市场,除了心仪人选凯恩之外,他们现在也在关注门兴前锋马库斯图拉姆。报道中表示直到目前在中锋的更强性能华为P60新机曝光,华为P50沦为牺牲品改写历史低价我们知道,华为手机目前仍然受到打压影响,麒麟芯片和5G功能在短期内都难以回归,不过华为Mate50系列还是带来了自研XMAGE影像卫星通信昆仑玻璃HarmonyOS3。0等全新技术
NASA发射改变小行星轨道的宇宙飞船DART,以保护地球免受撞击在1998年上映的好莱坞电影世界末日(Armageddon)中,扮演主人公的布鲁斯威利斯和本阿弗莱克为了拯救地球而四处奔走,使地球免受小行星撞击的灾难。从中可以看出,如果小行星撞击单耳只有3。75g?OPPOEncoAir成入门级耳机首选,两百元入手真香在苹果刚刚推出Airpods的那段时间,很多人都对这个产品嗤之以鼻不就是一个剪掉线的耳机吗,为什么要卖这么贵?很显然,他们现在都纷纷表示真香,而随着产量的扩大和工艺技术的不断精进,爱上好声音,双十一有哪些音频类产品值得买?大家好,我是梦想是个猪,今天为大家带来的是音频类产品的推荐。又到一年双十一,相信有不少烧音频器材的朋友们都在关注起自己的购物车里那些种草已久的产品了,嗯,反正我是一直都盯着自己的购双十一耳机推荐,SOUNDPEATSAir3体验,佩戴舒适才重要其实近几年,主动降噪耳机非常火,但是这种类型的耳机一般都是采用入耳式,我个人觉得佩戴起来不是很舒服,在那样耳机的选择上,我更青睐于半入耳式。苹果的AirPods虽然音质表现不错,但下手够狠!为争夺场上位置,雇人殴打队友根据法国队报的报道,大巴黎女足中场球员米娜塔迪亚洛被警方逮捕,原因竟然是她涉嫌雇人袭击她的俱乐部队友凯拉哈姆拉维,这样的操作也的确是震惊球迷。在报道当中指出,之前哈姆拉维遭遇到了两天奈科技严燕聚焦碳纳米管中高端市场,新材料生意有门槛碳纳米管是目前人类所能制造出来的最强最刚最硬的材料,同时也是最好的热和电的导体。诺贝尔化学奖得主富勒烯的发现者斯莫利曾如是评价道。如今,这种被赞誉为万能基材的富勒烯家族材料,正被加首播破2,排名第一,邓紫棋泪撒舞台!这档综艺凭什么这么横继星光大道中国达人秀后,我们有多久没有看见同质的民间选秀了呢?可以说多年过去后,能给老百姓发展的舞台少之又少。直到这两天,有一档名叫点赞!达人秀的综艺横空出世,才真正诠释了什么叫一治愈暖心的句子手执烟火以谋生,心怀诗意以谋爱1回过头来看,那些曾经让自己寝食难安的事,大多败给了想象。加油干!没那么难。2人活着就是为了解决困难,这才是生命的意义,也是生命的内容,逃避不是办法,知难而上往往是解决问题的最好手在岁月里经过,在心灵深处留下一道伤痕一直以为,很多一生都会遇到,曾经的那个他,可以一直牵着你的手,可以一直握着你的左手,可是最终,直到遇见他的时候。可是很多擦肩过,后来这份感情,注定让你忘了曾经的温和那段时光。那么,苹果iPadmini6蜂窝版正式开售A15芯片支持5G根据苹果官网显示,iPadmini6蜂窝版已经目前已经正式开售,这也是该产品的最高规格版本,首次支持了5G网络连接,起售价4999元。需要注意的是,在官网下订单时显示,iPadmi苹果iPhone15或将搭载3nm芯片三星GalaxyS22Ultra真机图曝光苹果iPhone15Pro将搭载3nm芯片M2ProMax或有40核CPU据MacRumors报道,苹果和台积电计划使用台积电5nm工艺的升级版制造第二代苹果硅芯片,该芯片将包含两