2013腾讯实习生招聘笔试题目[教育].doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2013腾讯实习生招聘笔试题目[教育]

32 位机上根据下面的代码,问哪些说法是正确的? signed char a = 0xe0; unsigned int b = a; unsigned char c = a; A. a0 c0 为真 B. a == c 为真 C. b 的十六进制表示是:0xffffffe0 D. 上面都不对 分析:坑爹丫,有木有!10 个人 9 个这个恐怕都不敢确定!(敢肯定的要么是高手,要么就是错的!) B me 认为是错的,一个 uchar 和一个 schar 比较,真的就是一个字节在比较吗?C me 认为是对的,将一个 schar 赋值给一个 uint,要不要符号扩展呢?是绝对会还是可能会呢?细节到底是神马?O__O…A 貌似比较确定,肯定是错的,肯定? 揭露真相:A 确实是错的,B 也是错的,C 是对的,所以 D 也是错的。理由?A 错是因为,a 是负数,c 是正数,即使跟 0 比较要转换到 int(后面暂不区分转换和类型提升,总之就是类型变了),也是一负一正,所以 A 错。B 呢?是说一正一负不会相等,难道是因为这吗?难道不是吗?首先说 a 和 c 的二进制表示一模一样,都是 0xe0,那么比较就不相等?!是的,比较的时候全部转换为 int,所以呢,a 还是作为一个负数存在,c 作为一个正数存在,于是就不相等了,所以 B 错。C 肿么就对了?a 是一个 schar,赋值给 uint 的 b,前若干个字节不是补 0 吗?首先 schar 转换为 int,然后 int 转换成 uint,所以最初是符号扩展,然后一个 int 赋值给了 uint,C correct!me 曾经要写一篇关于c的类型以及指针的 blog,不过最后没有完成,不过还是可以参考一下的。 下面哪些选项能编译通过? int i; char a[10; string f(); string g(string str); A. if(!!i){f();} B. g(f()); C. a=a+1; D. g(abc); 分析:再次坑爹有木有!(其实 me 比较确信这道题,是坑别人的爹,O__O…)A 绝对是正确的,C 绝对是错的,D 基本肯定是错的,那 B 呢?要么 error ,要嚒 warning!如果是 warning 但是没有 error ,这算神马情况呢?B 确实不应该选,至少语义上不该选!f() 返回一个临时量,然后传给 g 函数,而 g 的参数是非 const 引用,是不能引用临时量的!为嘛,如果 g 中修改了传进来的 string,那么会是怎么一回事呢?修改了一个临时量的值?那这意义何在呢?但是如果将 g 的原型修改为 string g(const string); 就是可以的,为么可以?访问(只读)临时量就是正确的?那必须的,比如 u 可能想知道 a+b 的结果是多少,然后输出!a+b 的结果就是一个临时量。如果说修改 a+b 的结果,这是神马个逻辑?! 真相:C 错是以为 a 是一个地址常量,不可能再被赋值。D 为嘛错呢?abc 的类型可是 const char* 呢,是个常量指针呢!(可以用来初始化 string。) int a[10]; 问下面哪些不可以表示 a[1] 的地址? A. a+sizeof(int) B. a[0]+1 C. (int*)a+1 D. (int*)((char*)a+sizeof(int)) 分析:奇葩丫!(其实并不奇葩!)腾讯的题目有时候出的的确有水平丫,虽然出的太有水平了分就考不高了。me 想哭丫,想来想去还是在 A 和 B 中选错了,%_%,当时还特意提醒自己来着的,O__O…c++ 中的 sort 如何用来排序 a 数组呢?sort(a, a+N); 或是 sort(a, a+sizeof(a)/sizeof(a[0])); 当时懵了,实际上 a+1,就是 a[1] 的地址呢!a 的类型是 int[10],a+1 和一个 int* 类型的 +1 效果一样,都表示偏移 1 个元素,所以 A 不能表示。(选错误的!) C 能表示是因为取了首地址作为一个 int* 然后 +1,就是偏移一个元素,所以不选。B 肿么说呢,me 一直一位a[0] 是一个普普通通的地址,+1 就是 +1个字节,实际上是 +1 个元素!D 也能表示?将 a 的首地址转换为一个 char* 指针,这个时候 +1 是偏移一个 char,也就是一个字节,实际上应该偏移 sizeof(int) 个字节才能到达 a[1],所以 D 可以表示(不选)。不多说了。(如果是二维数组是不是会更懵呢,O__O…) 问下面的数据都存放在哪些存储区? int main() { char *p = hello,world; return 0; } A.

文档评论(0)

beoes + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档