腾讯的java面试笔试题题哪里有?

试答一道经典的腾讯面试题:QQ的MVPa year ago赞赏还没有人赞赏,快来当第一个赞赏的人吧!85收藏分享举报文章被以下专栏收录人人都是产品经理,这个口号生来就是找喷的~~~推荐阅读{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&人人都是产品经理,这个口号生来就是找喷的~~~&,&permission&:&COLUMN_PRIVATE&,&memberId&:2170,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&人人都是产品经理,这个口号生来就是找喷的~~~&,&urlToken&:&iamsujie&,&id&:3665,&imagePath&:&e6a63b13d&,&slug&:&iamsujie&,&applyReason&:&&,&name&:&人人都是产品经理&,&title&:&人人都是产品经理&,&url&:&https:\u002F\\u002Fiamsujie&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:6246,&avatar&:{&id&:&e6a63b13d&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\\u002Fe6a63b13d_l.jpg&,&articlesCount&:143},&state&:&accepted&,&targetPost&:{&titleImage&:&https:\u002F\\u002Fd399cdca4cbd16eb5e9d03_r.png&,&lastUpdated&:,&imagePath&:&d399cdca4cbd16eb5e9d03.png&,&permission&:&ARTICLE_PUBLIC&,&topics&:[368,],&summary&:&1998年,QQ,当时还叫Oicq,开始规划,1999年2月推出Beta1,这是QQ的第一个公开版本,因为各种原因……优先实现3个特性,怎么选? 这是一道腾讯的面试题,网上有很多答案版本,我按照自己的理解梳理一遍,不纠结于哪3个,而是分析每一个,应该先做,还是缓…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T21:01:16+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:995061,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&试答一道经典的腾讯面试题:QQ的MVP&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:0,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&https:\u002F\\u002Fd399cdca4cbd16eb5e9d03_r.png&,&author&:{&bio&:&产品经理&,&isFollowing&:false,&hash&:&c637bd3126ba45befe662&,&uid&:80,&isOrg&:false,&slug&:&iamsujie&,&isFollowed&:false,&description&:&人人都是产品经理,是一句话,是一本书,更是一个理想~~~&,&name&:&苏杰&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fiamsujie&,&avatar&:{&id&:&a44a6e394&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:2170,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:413041}],&title&:&试答一道经典的腾讯面试题:QQ的MVP&,&author&:&iamsujie&,&content&:&\u003Cp\u003E1998年,QQ,当时还叫Oicq,开始规划,1999年2月推出Beta1,这是QQ的第一个公开版本,因为各种原因……优先实现3个特性,怎么选?\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fefe40ba24d_b.png\& data-rawwidth=\&459\& data-rawheight=\&344\& class=\&origin_image zh-lightbox-thumb\& width=\&459\& data-original=\&https:\u002F\\u002Fefe40ba24d_r.png\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='459'%20height='344'&&\u002Fsvg&\& data-rawwidth=\&459\& data-rawheight=\&344\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&459\& data-original=\&https:\u002F\\u002Fefe40ba24d_r.png\& data-actualsrc=\&https:\u002F\\u002Fefe40ba24d_b.png\&\u003E\u003C\u002Ffigure\u003E\u003Cbr\u003E\u003Cp\u003E这是一道腾讯的面试题,网上有很多答案版本,我按照自己的理解梳理一遍,不纠结于哪3个,而是分析每一个,应该先做,还是缓缓,这其实,就是QQ的MVP(最小可行产品):\u003C\u002Fp\u003E\u003Cp\u003E1、卡通头像\u003C\u002Fp\u003E\u003Cp\u003E2、不可窃听安全通讯\u003C\u002Fp\u003E\u003Cp\u003E3、聊天室\u003C\u002Fp\u003E\u003Cp\u003E4、很小的.exe文件\u003C\u002Fp\u003E\u003Cp\u003E5、皮肤Skin\u003C\u002Fp\u003E\u003Cp\u003E6、速度超快0.5秒反应\u003C\u002Fp\u003E\u003Cp\u003E7、聊天记录管理器\u003C\u002Fp\u003E\u003Cp\u003E8、语音\u003C\u002Fp\u003E\u003Cp\u003E9、视频\u003C\u002Fp\u003E\u003Cp\u003E10、看谁在线上\u003C\u002Fp\u003E\u003Cp\u003E11、传文件\u003C\u002Fp\u003E\u003Cp\u003E12、QQ表情\u003C\u002Fp\u003E\u003Cp\u003E===============\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第一个,卡通头像\u003C\u002Fstrong\u003E,是比较早做的。那个年代的网络,用户在大多数应用里只有一个ID,分不清男女老少,要知道,那会儿还很少有数码相机、可以拍照的手机、摄像头,所以真人头像很难实现。QQ的卡通头像,让用户活了起来,当时,用了一批迪斯尼的卡通动物和漫画人物做头像,唤起了早期用户对小时候看过的动画片的记忆,产生了情感链接。而头像的选择,也让用户互相沟通时,大概能知道对方的性格、性别、年龄等,是个萌妹子、还是个女汉子,是个小鲜肉、还是个成熟大叔。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第二个,不可窃听的安全通讯\u003C\u002Fstrong\u003E,历史上较早实现了,但我认为值得商榷。这可能和QQ最早的定位“中文网络寻呼机”有关,是对标“寻呼机”的,而“寻呼机”主要用于商务场合,对信息安全要求比较高。而QQ,其实是一个偏娱乐生活化的应用,我认为早期对安全的要求没那么高。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第三个,聊天室\u003C\u002Fstrong\u003E。QQ的最基础功能就是让用户在网上聊天,所以,和所有IM一样,刚推出来都要解决一个单边产品的通用问题:第一批用户从哪来,如何让他们彼此交互?每个用上第一版QQ的人都是极客,身边很少有朋友也在用,所以要解决他们“能找到陌生人聊天”的问题。于是,聊天室解决了这个问题,彼此陌生的人,在某个主题的聊天室里,可以天南海北的聊,我自己的打字速度也就是当年来聊天室里练出来的。\u003C\u002Fp\u003E\u003Cp\u003E早期的网络用户,已经熟悉了陌生交友的Web聊天室,所以迁移到客户端的QQ,不可能一下变成熟人关系,先从聊天室开始用,比较顺畅。彼此聊熟了,再加一下好友,就解决了用户QQ上没有好友的问题,只有有了好友,用户才会被黏住,有动力持续用QQ。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第十个,看谁在线上\u003C\u002Fstrong\u003E,也和这点相关,所以提前说一下。因为是即时通讯,要找人聊天,就得知道谁在线上,这和后来微信的“永远在线”是完全不同的概念。此外,通过查找在线用户,早期用户也经常定向的加一些好友,比如设定条件“北京市海淀区,女,18到22岁”,你是不是也想到了后来的陌陌?\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第四个,很小的.exe文件\u003C\u002Fstrong\u003E,这是结果,并不是需要投入资源去做的特性。当年的电脑、网络性能确实很差,要求安装文件小一点,但QQ的第一个版本,从无到有的代码,写好了也不会太大,几百K,优化的空间也不大,所以,优化安装包的大小,是若干版本之后,几十M了,才有价值专门投入资源去重构代码的。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第五个,皮肤Skin\u003C\u002Fstrong\u003E,明显是锦上添花的功能。我一直有个观点,当一个产品开始做“换肤”了,就说明这个产品进入了成熟期,可以把资源抽调出来去做更重要的事情了。段子里这样说:\u003C\u002Fp\u003E\u003Cp\u003E公司有个技术牛人,某产品助理向他提需求,牛人一看内容很扯,质问“你觉得这个需求有价值吗?”对方诚恳回答:“没价值,但是我总得写周报啊。”牛人想了一分钟,回答说“好吧,我帮你做,因为我也得写周报啊。”\u003C\u002Fp\u003E\u003Cp\u003E而“换肤”就是这样,满足了产品技术团队“写周报”的需求,满足了老板“识别投入过剩”的需求。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第六个,速度超快0.5秒反应\u003C\u002Fstrong\u003E,应该说的是针对网络的优化,需要尽早做。当年很多人家里使用的还是33.6k、56k的猫(调制解调器),速度慢、不稳定,记得我和大学宿舍同学寒假在各自家里,相隔几百公里,每次试图聊QQ前,都要先按照约定的协议试试网络是否通畅:\u003C\u002Fp\u003E\u003Cp\u003E我在QQ对话框里打“1”;他看到了回“2”;我看到“2”回“3”,……,他看到“9”回“10”,我看到“10”掐表,算一下平均一条消息需要传输几秒,别笑,当时的网络就是这样有明显的延时,哪怕传输文字。\u003C\u002Fp\u003E\u003Cp\u003E所以,网络优化很有必要。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第七个,聊天记录管理器\u003C\u002Fstrong\u003E,并没有很早做。我们想一下,聊天记录其实有两种,存贮在客户端的本地聊天记录,和存贮在服务端的漫游聊天记录,当时的网络环境,只能做客户端的,但,那个时候很多用户都没有个人电脑,去网吧上网是常态,于是,经常换电脑,导致了本地聊天记录失去了意义。据说那会儿,很多用户聊一次QQ就新注册一个QQ号,完全不理解“个人账号”的含义,以为和登录某些Web聊天室,进房间之前起个昵称是一样的,从而也就没有对“聊天记录”这种私有信息的强需求了。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第八个,语音;第九个,视频;第十一个,传文件\u003C\u002Fstrong\u003E,放在一起说,没有很早去做,因为当时的网络速度,实现了也不会有很好的体验,先等宽带普及以后再说吧。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E第十二个,QQ表情\u003C\u002Fstrong\u003E,明显是个可替代的功能,所以也可以先放着。我们都知道有一种东西叫做颜文字、emoji,用一个冒号,半个括号就可以代表笑脸,哭脸,所以,情绪的表达暂时不急,:)\u003C\u002Fp\u003E\u003Cp\u003E最后,提一个“优雅降级”的概念,就是在思考这种“一大堆功能中,选几个先做”的问题之时,我们也可以用逆向思维,假设产品已经完全具备这些功能了,但是因为流量太大,服务器撑不住了,必须要关掉某些功能已保证基础产品的可用性,天猫双11的时候,在产品里就做了成百上千个这样的开关。这时候,你关掉哪些,保留的那些,就是应该最先做的那一批,我的答案依然是:1(甚至可以不要这个)、3、6、10。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E-----------------------------\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003Eiamsujie,前阿里产品经理,写过《人人都是产品经理》、《淘宝十年产品事》,现在做创业者服务,『良仓孵化器』创始合伙人,『B12』合伙人。更多信息可以关注二维码。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002F23ba9758cbd06d4b24b3_b.jpg\& data-rawwidth=\&200\& data-rawheight=\&202\& class=\&content_image\& width=\&200\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='200'%20height='202'&&\u002Fsvg&\& data-rawwidth=\&200\& data-rawheight=\&202\& class=\&content_image lazy\& width=\&200\& data-actualsrc=\&https:\u002F\\u002F23ba9758cbd06d4b24b3_b.jpg\&\u003E\u003C\u002Ffigure\u003E&,&updated&:new Date(&T13:01:16.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:24,&collapsedCount&:0,&likeCount&:85,&state&:&published&,&isLiked&:false,&slug&:&&,&lastestTipjarors&:[],&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\\u002Fd399cdca4cbd16eb5e9d03_r.png&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&产品经理&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&互联网创业&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&用户需求分析&}],&adminClosedComment&:false,&titleImageSize&:{&width&:1016,&height&:532},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&tipjarState&:&activated&,&tipjarTagLine&:&真诚赞赏,手留余香&,&sourceUrl&:&&,&pageCommentsCount&:24,&tipjarorCount&:0,&annotationAction&:[],&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T21:01:16+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[{&bio&:&产品经理&,&isFollowing&:false,&hash&:&219616dfbd6f2b37a7d0&,&uid&:920060,&isOrg&:false,&slug&:&LazySnail&,&isFollowed&:false,&description&:&桀骜不驯,放荡不羁&,&name&:&Snail&,&profileUrl&:&https:\u002F\\u002Fpeople\u002FLazySnail&,&avatar&:{&id&:&fdccc61a64dbab4&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.png&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&细水长流,温润如玉&,&isFollowing&:false,&hash&:&bb16d019a67bf5&,&uid&:80,&isOrg&:false,&slug&:&LanclotHolmes&,&isFollowed&:false,&description&:&http:\u002F\u002Fizhaoyi.top\u002F&,&name&:&楚子航&,&profileUrl&:&https:\u002F\\u002Fpeople\u002FLanclotHolmes&,&avatar&:{&id&:&v2-e1d350dc30ce412c83db510bfb1fd06b&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&好色无胆,好酒无量,好财无能。&,&isFollowing&:false,&hash&:&390a53d1aef5f8c1eda7a95&,&uid&:44,&isOrg&:false,&slug&:&li-bo-yang-zlatan&,&isFollowed&:false,&description&:&菜的抠脚。。。&,&name&:&文武双缺&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fli-bo-yang-zlatan&,&avatar&:{&id&:&a0c45ca8c6f0b537f52c178b91d1401c&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&化名霍源&,&isFollowing&:false,&hash&:&e97fd14f9e7c1ed55d1dadc&,&uid&:647800,&isOrg&:false,&slug&:&molder-57&,&isFollowed&:false,&description&:&&,&name&:&霍源&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fmolder-57&,&avatar&:{&id&:&v2-ba662a45afa3c00f4edd&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&测试工程师&,&isFollowing&:false,&hash&:&0fc23abbf01b86230dbc&,&uid&:238900,&isOrg&:false,&slug&:&li-zhen-nan-81-47&,&isFollowed&:false,&description&:&&,&name&:&李振南&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fli-zhen-nan-81-47&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}],&summary&:&\u003Cimg src=\&https:\u002F\\u002Fefe40ba24d_200x112.png\& data-rawwidth=\&459\& data-rawheight=\&344\& class=\&origin_image inline-img zh-lightbox-thumb\& data-original=\&https:\u002F\\u002Fefe40ba24d_r.png\&\u003E1998年,QQ,当时还叫Oicq,开始规划,1999年2月推出Beta1,这是QQ的第一个公开版本,因为各种原因……优先实现3个特性,怎么选? 这是一道腾讯的面试题,网上有很多答案版本,我按照自己的理解梳理一遍,不纠结于哪3个,而是分析每一个,应该先做,还是缓…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&annotationDetail&:null,&commentsCount&:24,&likesCount&:85,&FULLINFO&:true}},&User&:{&iamsujie&:{&isFollowed&:false,&name&:&苏杰&,&headline&:&人人都是产品经理,是一句话,是一本书,更是一个理想~~~&,&avatarUrl&:&https:\u002F\\u002F50\u002Fa44a6e394_s.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&iamsujie&,&bio&:&产品经理&,&hash&:&c637bd3126ba45befe662&,&uid&:80,&isOrg&:false,&description&:&人人都是产品经理,是一句话,是一本书,更是一个理想~~~&,&badge&:{&identity&:null,&bestAnswerer&:null},&profileUrl&:&https:\u002F\\u002Fpeople\u002Fiamsujie&,&avatar&:{&id&:&a44a6e394&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&nwebStickySidebar&:&sticky&,&androidPassThroughPush&:&all&,&newMore&:&new&,&liveReviewBuyBar&:&live_review_buy_bar_2&,&liveStore&:&ls_a2_b2_c1_f2&,&qawebThumbnailAbtest&:&new&,&searchHybridTabs&:&without-tabs&,&iOSEnableFeedModuleWWANAritclePreRender&:&iOS_FeedModule_WWAN_PreRender_Enable&,&isOffice&:&false&,&liveDetailWechatBanner&:&Live_detail_wechat_banner_1&,&newLiveFeedMediacard&:&old&,&homeUi2&:&default&,&showVideoUploadAttention&:&false&,&recommendationAbtest&:&new&,&marketTab&:&market_tab_old&,&qrcodeLogin&:&qrcode&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&newMobileColumnAppheader&:&new_header&,&androidDbRecommendAction&:&open&,&zcmLighting&:&zcm&,&favAct&:&default&,&appStoreRateDialog&:&close&,&mobileQaPageProxyHeifetz&:&m_qa_page_nweb&,&default&:&None&,&wechatShareModal&:&wechat_share_modal_show&,&qaStickySidebar&:&sticky_sidebar&,&androidProfilePanel&:&panel_b&,&nwebWriteAnswer&:&experiment&}},&columns&:{&next&:{}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&switches&:{&couldSetPoster&:false},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null}},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{&baidu&:false,&yidianzixun&:false,&qqnews&:false},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false,&userAgent&:{&ua&:&Mozilla\u002F5.0 (compatible, MSIE 11, Windows NT 6.3; Trident\u002F7.0; rv:11.0) like Gecko&,&browser&:{&name&:&IE&,&version&:&11&,&major&:&11&},&engine&:{&version&:&7.0&,&name&:&Trident&},&os&:{&name&:&Windows&,&version&:&8.1&},&device&:{},&cpu&:{}}},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}  前提:本人2011年毕业于一个普通本科,工作不到2年。
  15号晚上7点多,正在炒菜做饭,腾讯忽然打电话来问我对他们的Linux C++的职位是否感兴趣,我表达了我感兴趣之后,就开始了一段简短的电话面试,电话面试主要内容:C++和TCP socket通信的一些基础知识。之后就问我一道算法题:10亿个整数,随机生成,可重复,求最大的前1万个。当时我一下子就蒙了,没反应过来,何况我还正在烧着菜呢,所以我就没细想,说了一个连我都鄙视我的思路:我说导入数据库,然后用select语句选出最大的前1万个。可能我的答案连面试官都无语了,所以他就没再往下问了,不过他还是通知我明天16号早上去腾讯大厦笔试,由于我明天没空,就推迟到了17号早上10点。至此,整个电话面试就结束了。过后,我想了想,10亿个整数选前1万个大数,其实可以用:分治法+hash+多路归并排序来做,比如说,先把10亿个整数对1000取模,存储到1000个文件中,然后对每一个文件进行内部排序(比如快速排序,从大到小排序),然后再对这1000个文件进行多路归并,取出前1万个最大的数即可。
  17号早上,怀着忐忑不安的心情,终于来到了腾讯大厦,在前台说明情况后,领了一个临时访问牌,一个看起来30多岁的中年人(暂且称为面试官A)接待了我,给我一份笔试题,时间为1小时。5道程序输出写结果或者程序找错,5道编程题。这5道编程题大概为:
  1、将一个4字节的整数的二进制表示中的001替换为011,输出替换后的整数。
  2、将一个数组右移几位,比如数组为1 2 3 4,右移一位即为4 1 2 3。
  3、输入一个表示十六进制的字符串,转换为十进制的整数输出。
  4、单链表反转。
  5、一个8*8的方格子,A点在左下角,B点在右上角,求A点到B点的最短路径有多少条。
  第1题,我理解错题意了,顺便鄙视一下自己,我当时的想法是这样的:整数有正有负,不能拿该整数直接右移,所以我用了一个unsigned int mode = 7进行左移,是直接拿整数与mode相与,得到的结果与001比较,相同就替换,不同就把mode左移3位再与整数相与。面试官A直接指出我的思路有问题,相等替换后mode左移3位,不相等应该将mode左移1位,而不是左移3位,只有相等才把mode左移3位。这里顺便说一下,笔试完之后,面试官A是拿着你的笔试题一题一题的问你,根据你的题目结果要你说出你的计算过程的。答案:
  第2题,由于这道题我之前做过,思路就是:先把左边反转,再把右边反转,最后把整个数组反转就可以得到结果。但是悲剧的是,面试官A要我用数学证明我这种方法的正确性,o(╯□╰)o,最后我只能说:我之前做过这道题。如果当时,我能套用线性代数中矩阵的转置的思想来说明这道题,那么这道题的证明可能说得过去。所以说,要对你写的代码负责,要知其然,更要知其所以然。类似题目:
  第3题,进制转换,简单,不过要分别考虑大小写字母。
  第4题,简单,就不说了。答案在我的另一篇博文:
  第5题,我也是想错了方向,由于没有时间了,代码我没写,我只写了个思路:即从A点开始用广度优先搜索,第一个到达B点的肯定是最短路径,记下此时A点到B点的步数,然后统计从A到B点等于这个步数的个数。其实,广度优先搜索只能求出最短路径,但不能求出所有的最短路径个数,要想求出所有最短路径的个数,要用回溯法(后面我会给出代码)。想想当时面试的时候还振振有词的向面试官A讲解我的思路,也不知道面试官A是怎么想的,也不指出我的错误,怕是怕我难堪吧。
  面试官A面完之后已经是12点多了,这是又来了一个27、8岁的大哥(暂且称为面试官B)来面试我,一上来就给我一道编程题,实现大数相加,给出代码。我又刷刷的写了20多分钟,认为没问题了,就拿给面试官B看,看了一小会,就指出我的代码错在什么地方了,(哎,毕竟是手写代码,错误肯定很多),要我改正,一步一步的引导我将我的代码改正,非常和蔼的一位大哥哥,也是和我聊的最久的,聊到了下午2点多,差不多两个钟头,期间主要问的问题各种各样都有:
  1、技术相关:map的实现机制是怎么样的啊;模板类的偏特化;动态加载dll和静态加载dll的区别;线程和进程的区别;TCP的四次挥手协议;给定两个数组a和b,求所有在a数组中不在b数组的元素;快速排序的平均时间复杂度是多少,证明它的平均时间复杂度等。这些问题我都一一说出了我的答案,主要是我看过一点&stl源码剖析&、&算法导论&,所以没觉的有什么难度,好像他也觉得我回答的还不错。
  2、其他:3点一刻,求此时时针和分针夹角的度数;对腾讯这个公司怎么看;为什么离职;个人规划等。
  面试官B面完之后,叫我先出去吃午饭,下午回来还有一次面试。吃饭归来之后,又来了一位也是27、8岁的大哥(暂且称为面试官C),给我几道逻辑题,要我20分钟写出答案,在我和他讲解我的逻辑题之后,他问了几个我不熟悉的或者已经记不清答案的问题:一个进程由哪些方面构成,我记得&windows核心编程&一书上有讲,但我记不清了,吱吱呜呜也没说出一个所以然来,之后又问了一个我不懂怎样回答的问题:你认为你的优势是什么?作为一个二流学校毕业的屌丝,工作还不到2年,没学历,项目经验又没什么亮点。实在不懂怎么说,憋了半天只说出一句:我基础还行。之后就没在问问题了,最后面试官B通知我可以回去了。哎,这可能就是导致我最后悲剧的原因吧。
  1、没有大公司面试经验,并且由于事先也完全没有做准备,好像赶鸭子上架
  2、基础一定要扎实,C++,数据结构和算法,操作系统,网络编程要熟悉。
  3、对自己写的代码负责
  4、腾讯的员工非常友好
近期目标:
  1、看数据结构和算法
  2、熟悉C++编程规范。
  3、多看别人写的优秀源码,争取自己写的代码简洁易懂
  给出笔试的最后一道编程题的题目和我写的答案,如果有任何问题,请指正。
  题目:给定一个8*8的方格子,如下图所示,求A点到B点的最短路径有多少条?用算法实现。
  答:从图中可以看出,A点到B点的最短路径为16,即A点横走8小格,纵走8小格才能最快到达B点,这是排列组合的问题,即从最短路径16中选取8个横走的小格子(或者从最短路径16中选取8个纵走的小格子)。所以从A点到B点的最短路径条数,直接可以算出来,即为:
  代码如下:
size_t g_num = 0;
//统计A点到B点的最短路径条数
void shortestPathNumber(char grid[9][9], int row, int col, int &step)
if (row & 0 || row & 8 || col & 0 || col & 8 || grid[row][col] == '*' || step & 16)
if (row == 0 && col == 8)
if (step == 16)
//已到达B点,且等于最短路径16,就累加
grid[row][col] = '*'; //标记该点已访问
shortestPathNumber(grid, row, col + 1, step);
shortestPathNumber(grid, row + 1, col, step);
shortestPathNumber(grid, row, col - 1, step);
shortestPathNumber(grid, row - 1, col, step);
grid[row][col] = '.'; //回溯
int _tmain(int argc, _TCHAR* argv[])
char grid[9][9] = {0};
int step = 0;
shortestPathNumber(grid, 8, 0, step); //从A点开始搜索
cout&&"A点到B点的最短路径条数为: "&&g_num&&
  运行界面如下:
  venow &完
阅读(...) 评论()

我要回帖

更多关于 java面试笔试题 的文章

 

随机推荐