<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>西瓜田 &#187; 2013</title>
	<atom:link href="http://blog.thpiano.com/?feed=rss2&#038;tag=2013" rel="self" type="application/rss+xml" />
	<link>http://blog.thpiano.com</link>
	<description>无复洛城东</description>
	<lastBuildDate>Tue, 19 Jan 2021 03:54:37 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>2013腾讯实习生一面后续</title>
		<link>http://blog.thpiano.com/?p=823</link>
		<comments>http://blog.thpiano.com/?p=823#comments</comments>
		<pubDate>Sat, 27 Apr 2013 09:28:35 +0000</pubDate>
		<dc:creator>suika</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[2013]]></category>
		<category><![CDATA[HR面]]></category>
		<category><![CDATA[一面]]></category>
		<category><![CDATA[二面]]></category>
		<category><![CDATA[互联网]]></category>
		<category><![CDATA[实习生]]></category>
		<category><![CDATA[暑期实习生]]></category>
		<category><![CDATA[腾讯]]></category>
		<category><![CDATA[重庆]]></category>
		<category><![CDATA[面经]]></category>

		<guid isPermaLink="false">http://blog.thpiano.com/?p=823</guid>
		<description><![CDATA[一面过后又面了2面、HR面，随便写写 2面是技术总监来面，但是感觉非常和蔼，整个过程都在微笑。一面的时候，我问面试官二面会不会还是你们项目组的，对面说不一定，于是二面的时候上来自我介绍我还是说了“自己首选c/c++，但是做java也可以”的情况。没想到2面的还是搞java的 OTL…… 2面问的问题还是两部分，项目和技术细节 项目里，问了我怎么调试bug，遇到最困难的事情是什么，怎么解决的 技术细节方面，先后问了mysql调优（这个我不会！），forward和redirect的区别（还是不会！），gc机制（这个一面其实就问过了，我补习的，回答的还好），多线程（只是问了下有没有用过，我说没在java下用过，他就没问了OTL 其实我觉得我还是可以讲一讲的），滑动窗口（我大概写了过程，对面问我，是大三学的吧？看来忘得差不多了） 后来又问了一些网站安全方面的问题，先问了SQL注入是什么，怎么防，我答了下，顺口说觉得这个还比较好防，然后对面就开始问“你觉得什么比较难防” 我就把去年比较热的hash碰撞漏洞说了下，说到一半想起来这个一点都不难防，补丁早就有了= =！他也没说什么，还问了下XSS 不过真是一道算法相关的都没问……我还特地问了下，你觉得工作里会用到算法么？ 对面曰：主要是做业务逻辑，所以一般是用的不多，不过到了要用到的时候，要是你不会，那可不行 后面就是交流了一下那边的工作内容，实习期的工作，长度，预期要做的事情，做实习生时导师的情况之类的，总共大概面了差不多40分钟 其实2面之前还是觉得非常紧张的，到场了以后和同学交流，同学说问的问题都很bt，比如说让你最快速度写出尽可能多的linux命令，还有算法题之类的 算法题凭记忆好像有单链表查环，上台阶的方法总数，海量数据库里找一个数是否存在，还有就是楼层扔鸡蛋的问题。感觉这些算法题都很好对付啊！可惜没人问我 TAT…… 我觉得，我还是更适合做c/c++开发，不过linux确实是我的短板。 第二天HR面，我晚上一直没收到短信，还在想，是不是推到后天了？上午翻同学微博，才得知他们是今天HR面，然后赶快检查自己邮箱，原来自己也是下午HR面！ 好险，差一点就错过了。不过时间也不多了，没怎么准备就去了 面我的hr其实之前见过，一面的时候她负责签到，算是hr里年龄比较大的，应该是主管之类的职位。一面二面我都是主动自我介绍，HR面倒是她先让我自我介绍了。 内容就是聊天，比如说家庭情况，爱好，职业规划，为什么选腾讯，学习的方法，是什么支持你学习这么多，缺点，优点之类的。有几个问题感觉准备的不够好，有几个问题觉得回答的不够好，但也是聊了半个小时多。 聊天的过程中看到她有自己的卷子，就问了下笔试成绩，得知只有60多，还是挺惊险的。顺便问了下，面HR的一共有多少人，对面说有几十个，我心一凉。对面接着说，这次的名额非常非常有限，所以如果挂了的话你可以考虑等9月份校招的时候再来面，那个时候岗位多。我心凉透了……我问她，这次也算是走到HR面，要是最后被鄙视了，那数据库会不会有啥记录之类的，她说，你把这个经历给面试官说一下，他会做参考的（也就是说人才库之类的就只是个安慰了……） HR面完出来，进电梯正好碰到其他hr，她们看到我皱皱的衣服，凌乱的头发，唏嘘的胡渣，惊讶地对我说，面的这么惨啊。（……） 我顺便问了一下，下午大概要面多少人？她们说下午要面30个左右。加上上午面的，我估计重庆这边应该有5,60个来面HR的，最后留下的人也就十来个吧。以前还以为HR不刷人的，如今算了下，HR刷人比例一点都不比一面二面少…… 参加笔试的应该在1000人出头，算上后面霸面的，估计每轮都是5个里选1个的程度了 根据群里其他同学的分享，产品只有2个名额，运维4个，后台这边来了三个组，有一个组只招1个或2个。感觉希望如此渺茫，就不报期待了，暂且忘掉面试，还是回到日常生活里吧 ================================================= 5.6更新 同届有三四个同学拿到offer了吧，我被刷了。收获了挫折感，然后又是惯常地跑到个人记事本里去给自己打鸡血写计划去了啊哈哈，其实都没啥用。 其实开始的时候不报期望的，觉得能面上就不错了。而现在的感觉，却仿佛是当初壮志豪言一定要拿下最后却未能兑现。师兄和周围同学们总是说我没问题，人言可畏啊 至于被刷的原因，肯定是实力不足妥妥没跑了。除此之外再给自己找几个开脱借口： 1.面试时心不够沉静，对面面试官一笑，我这边就放松了。 2.准备的东西牛头不对马嘴。做了半年多oj，看了编程珠玑编程之美inside c++，却没想到面试官只看java和业务逻辑。对于自己最擅长的东西，不仅没有被问到，更连谈论的必要都没有。那个时候就应该果断提出去面其他面试官的。 3.重视程度不够。 顺便，阿里巴巴的暑期实习生简历都没过，网易微软根本不给我们这些小学校机会，百度的还遥遥无期，这个暑假估计是没得实习了。]]></description>
			<content:encoded><![CDATA[<p>一面过后又面了2面、HR面，随便写写<span id="more-823"></span></p>
<p>2面是技术总监来面，但是感觉非常和蔼，整个过程都在微笑。一面的时候，我问面试官二面会不会还是你们项目组的，对面说不一定，于是二面的时候上来自我介绍我还是说了“自己首选c/c++，但是做java也可以”的情况。没想到2面的还是搞java的 OTL……</p>
<p>2面问的问题还是两部分，项目和技术细节<br />
项目里，问了我怎么调试bug，遇到最困难的事情是什么，怎么解决的<br />
技术细节方面，先后问了mysql调优（这个我不会！），forward和redirect的区别（还是不会！），gc机制（这个一面其实就问过了，我补习的，回答的还好），多线程（只是问了下有没有用过，我说没在java下用过，他就没问了OTL 其实我觉得我还是可以讲一讲的），滑动窗口（我大概写了过程，对面问我，是大三学的吧？看来忘得差不多了）<br />
后来又问了一些网站安全方面的问题，先问了SQL注入是什么，怎么防，我答了下，顺口说觉得这个还比较好防，然后对面就开始问“你觉得什么比较难防”<br />
我就把去年比较热的hash碰撞漏洞说了下，说到一半想起来这个一点都不难防，补丁早就有了= =！他也没说什么，还问了下XSS<br />
不过真是一道算法相关的都没问……我还特地问了下，你觉得工作里会用到算法么？<br />
对面曰：主要是做业务逻辑，所以一般是用的不多，不过到了要用到的时候，要是你不会，那可不行<br />
后面就是交流了一下那边的工作内容，实习期的工作，长度，预期要做的事情，做实习生时导师的情况之类的，总共大概面了差不多40分钟</p>
<p>其实2面之前还是觉得非常紧张的，到场了以后和同学交流，同学说问的问题都很bt，比如说让你最快速度写出尽可能多的linux命令，还有算法题之类的<br />
算法题凭记忆好像有单链表查环，上台阶的方法总数，海量数据库里找一个数是否存在，还有就是楼层扔鸡蛋的问题。感觉这些算法题都很好对付啊！可惜没人问我 TAT……</p>
<p>我觉得，我还是更适合做c/c++开发，不过linux确实是我的短板。</p>
<p><br/><br />
第二天HR面，我晚上一直没收到短信，还在想，是不是推到后天了？上午翻同学微博，才得知他们是今天HR面，然后赶快检查自己邮箱，原来自己也是下午HR面！<br />
好险，差一点就错过了。不过时间也不多了，没怎么准备就去了</p>
<p>面我的hr其实之前见过，一面的时候她负责签到，算是hr里年龄比较大的，应该是主管之类的职位。一面二面我都是主动自我介绍，HR面倒是她先让我自我介绍了。<br />
内容就是聊天，比如说家庭情况，爱好，职业规划，为什么选腾讯，学习的方法，是什么支持你学习这么多，缺点，优点之类的。有几个问题感觉准备的不够好，有几个问题觉得回答的不够好，但也是聊了半个小时多。<br />
聊天的过程中看到她有自己的卷子，就问了下笔试成绩，得知只有60多，还是挺惊险的。顺便问了下，面HR的一共有多少人，对面说有几十个，我心一凉。对面接着说，这次的名额非常非常有限，所以如果挂了的话你可以考虑等9月份校招的时候再来面，那个时候岗位多。我心凉透了……我问她，这次也算是走到HR面，要是最后被鄙视了，那数据库会不会有啥记录之类的，她说，你把这个经历给面试官说一下，他会做参考的（也就是说人才库之类的就只是个安慰了……）</p>
<p>HR面完出来，进电梯正好碰到其他hr，她们看到我皱皱的衣服，凌乱的头发，唏嘘的胡渣，惊讶地对我说，面的这么惨啊。（……）<br />
我顺便问了一下，下午大概要面多少人？她们说下午要面30个左右。加上上午面的，我估计重庆这边应该有5,60个来面HR的，最后留下的人也就十来个吧。以前还以为HR不刷人的，如今算了下，HR刷人比例一点都不比一面二面少……<br />
参加笔试的应该在1000人出头，算上后面霸面的，估计每轮都是5个里选1个的程度了</p>
<p>根据群里其他同学的分享，产品只有2个名额，运维4个，后台这边来了三个组，有一个组只招1个或2个。感觉希望如此渺茫，就不报期待了，暂且忘掉面试，还是回到日常生活里吧</p>
<p>=================================================<br />
5.6更新</p>
<p>同届有三四个同学拿到offer了吧，我被刷了。收获了挫折感，然后又是惯常地跑到个人记事本里去给自己打鸡血写计划去了啊哈哈，其实都没啥用。<br />
其实开始的时候不报期望的，觉得能面上就不错了。而现在的感觉，却仿佛是当初壮志豪言一定要拿下最后却未能兑现。师兄和周围同学们总是说我没问题，人言可畏啊<br />
至于被刷的原因，肯定是实力不足妥妥没跑了。除此之外再给自己找几个开脱借口：<br />
1.面试时心不够沉静，对面面试官一笑，我这边就放松了。<br />
2.准备的东西牛头不对马嘴。做了半年多oj，看了编程珠玑编程之美inside c++，却没想到面试官只看java和业务逻辑。对于自己最擅长的东西，不仅没有被问到，更连谈论的必要都没有。那个时候就应该果断提出去面其他面试官的。<br />
3.重视程度不够。</p>
<p>顺便，阿里巴巴的暑期实习生简历都没过，网易微软根本不给我们这些小学校机会，百度的还遥遥无期，这个暑假估计是没得实习了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thpiano.com/?feed=rss2&#038;p=823</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>2013腾讯实习生一面流水账</title>
		<link>http://blog.thpiano.com/?p=817</link>
		<comments>http://blog.thpiano.com/?p=817#comments</comments>
		<pubDate>Wed, 24 Apr 2013 01:46:53 +0000</pubDate>
		<dc:creator>suika</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[2013]]></category>
		<category><![CDATA[2013腾讯实习生面试]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[一面]]></category>
		<category><![CDATA[实习]]></category>
		<category><![CDATA[腾讯]]></category>
		<category><![CDATA[腾讯实习生]]></category>
		<category><![CDATA[腾讯面试]]></category>
		<category><![CDATA[重庆面试]]></category>
		<category><![CDATA[面试]]></category>

		<guid isPermaLink="false">http://blog.thpiano.com/?p=817</guid>
		<description><![CDATA[笔试过后第三天出结果，同一个教室的下午3点就接到面试通知了，我这边一直寂静…… 后来接到了腾讯的电话，说我资料填的不详细，让我补充 要补的就是诸如面试岗位、城市、擅长的语言等。我觉得很奇怪，我明明都填了，并且从电话那边的口气来听，他也看得到我之前填的资料 或许只是来确认下，或是要我再考虑吧。我想想确实也有点问题，本科做的项目都用java，但是擅长的选的c/c++；岗位填的后台，简历里却又说平时爱好做游戏 到了晚上6点，都准备明天去霸面了，终于还是收到通知了。 通知是下午2点，实际上1点半就被叫进去了。 在宾馆的标准间里面的，面试官看着非常年轻，感觉和我差不多年纪吧，一点都不摆架子，很和善。 进门递了简历以后，还没等面试官就位我开始自我介绍，为的是抢占先机。 先是提到自己本科的毕设，引起了对面的兴趣，然后balabala 说完毕设，说本科的几个java网站项目，面试官终于来精神了，首先是问了使用的架构，分工，负载情况 然后问我，看你最擅长的是c/c++，那你java怎么样？ 呃，两年没用java了，只能如实托出 然后面试官就java问了几个基础问题，比如说： GC的工作原则和垃圾回收机制是什么？我只答了最基础的引用计数OTL…… 回来的路上想到，GC的任务是保证内存可用，回收内存只是一方面，另一方面还有内存碎片等问题，所以多机制是必然的 java里会不会内存泄露？我一开始回答说不会，因为java走的全都是引用，逃不掉引用计数。后来又补了下，GC认为一个变量要呆的时间比程序员认为的要长，那就算内存泄露，这种情况是可能出现的 JVM内部调用类库的方式是什么？我也完全空白，只好说不会。但是我说我可以做个推测，于是就把c/c++里面静态链接、动态链接大概说了一下 还问我有没有做过多线程？我就中兴比赛的那个程序说了一下，不过很快意识到应该是问java下的，就凭印象回答了runnable接口和thread类 回答之后，我询问了一下，面试官是不是主要就是做java的，对面回答说是wapqq门户网站模块的后台 感觉java的问题都答得很糟糕，但是面试官还是很和善的样子，说我们轻松一下，来聊聊怎么做个俄罗斯方块小游戏吧 然后我就把我常用的游戏结构给写上去了，主循环，渲染模块，逻辑模块，帧控制，在纸上做了大体表示 不过感觉回答的太快了，所以思路显得很乱。因为前面的结构早就有数了，我一上来就开始说怎么设计里面对象的类和属性了，不太好 并且忽略了对面擅长java的事情，应该把模块关系、类的构造和继承关系都清晰地写出来才对。 对面还特地问了一下，为什么要帧控制 问完游戏，他开始继续低头看我简历，我就抓紧机会，问了一下他们公司这边的情况。这次来重庆面试后台的有三个组，除去他们这个java组之外，另外两个组是c/c++为主，但都是类似服务器半开发半维护的样子。他们java组都是用的自己的框架，很少用开源的东西。面试官还问我，对他们做的后台方向有没有兴趣，我说，我以前也做过类似的工作，我觉得能来做这个的话是非常宝贵的机会，我想去 （其实心里也在想，本科以后就放弃做java网站后台了，还真没想过要重新做这个……不过我也没得挑，能过一面就算成功了） 至此面试就结束了，大概30分钟的样子，其他同学貌似都有被问40分钟。临走的时候对面说觉得还行，大概2,3天后会有结果。不过我回来想想，java的几个问题真是回答的乱七八糟，进二面估计很玄了。只能算是自己运气好，没有碰上爱给压力的面试官]]></description>
			<content:encoded><![CDATA[<p>笔试过后第三天出结果，同一个教室的下午3点就接到面试通知了，我这边一直寂静……<br />
后来接到了腾讯的电话，说我资料填的不详细，让我补充<br />
要补的就是诸如面试岗位、城市、擅长的语言等。我觉得很奇怪，我明明都填了，并且从电话那边的口气来听，他也看得到我之前填的资料<br />
或许只是来确认下，或是要我再考虑吧。我想想确实也有点问题，本科做的项目都用java，但是擅长的选的c/c++；岗位填的后台，简历里却又说平时爱好做游戏</p>
<p>到了晚上6点，都准备明天去霸面了，终于还是收到通知了。<span id="more-817"></span></p>
<p>通知是下午2点，实际上1点半就被叫进去了。<br />
在宾馆的标准间里面的，面试官看着非常年轻，感觉和我差不多年纪吧，一点都不摆架子，很和善。<br />
进门递了简历以后，还没等面试官就位我开始自我介绍，为的是抢占先机。<br />
先是提到自己本科的毕设，引起了对面的兴趣，然后balabala<br />
说完毕设，说本科的几个java网站项目，面试官终于来精神了，首先是问了使用的架构，分工，负载情况<br />
然后问我，看你最擅长的是c/c++，那你java怎么样？<br />
呃，两年没用java了，只能如实托出<br />
然后面试官就java问了几个基础问题，比如说：<br />
GC的工作原则和垃圾回收机制是什么？我只答了最基础的引用计数OTL…… 回来的路上想到，GC的任务是保证内存可用，回收内存只是一方面，另一方面还有内存碎片等问题，所以多机制是必然的<br />
java里会不会内存泄露？我一开始回答说不会，因为java走的全都是引用，逃不掉引用计数。后来又补了下，GC认为一个变量要呆的时间比程序员认为的要长，那就算内存泄露，这种情况是可能出现的<br />
JVM内部调用类库的方式是什么？我也完全空白，只好说不会。但是我说我可以做个推测，于是就把c/c++里面静态链接、动态链接大概说了一下<br />
还问我有没有做过多线程？我就中兴比赛的那个程序说了一下，不过很快意识到应该是问java下的，就凭印象回答了runnable接口和thread类</p>
<p>回答之后，我询问了一下，面试官是不是主要就是做java的，对面回答说是wapqq门户网站模块的后台<br />
感觉java的问题都答得很糟糕，但是面试官还是很和善的样子，说我们轻松一下，来聊聊怎么做个俄罗斯方块小游戏吧<br />
然后我就把我常用的游戏结构给写上去了，主循环，渲染模块，逻辑模块，帧控制，在纸上做了大体表示<br />
不过感觉回答的太快了，所以思路显得很乱。因为前面的结构早就有数了，我一上来就开始说怎么设计里面对象的类和属性了，不太好<br />
并且忽略了对面擅长java的事情，应该把模块关系、类的构造和继承关系都清晰地写出来才对。</p>
<p>对面还特地问了一下，为什么要帧控制</p>
<p>问完游戏，他开始继续低头看我简历，我就抓紧机会，问了一下他们公司这边的情况。这次来重庆面试后台的有三个组，除去他们这个java组之外，另外两个组是c/c++为主，但都是类似服务器半开发半维护的样子。他们java组都是用的自己的框架，很少用开源的东西。面试官还问我，对他们做的后台方向有没有兴趣，我说，我以前也做过类似的工作，我觉得能来做这个的话是非常宝贵的机会，我想去<br />
（其实心里也在想，本科以后就放弃做java网站后台了，还真没想过要重新做这个……不过我也没得挑，能过一面就算成功了）</p>
<p>至此面试就结束了，大概30分钟的样子，其他同学貌似都有被问40分钟。临走的时候对面说觉得还行，大概2,3天后会有结果。不过我回来想想，java的几个问题真是回答的乱七八糟，进二面估计很玄了。只能算是自己运气好，没有碰上爱给压力的面试官</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thpiano.com/?feed=rss2&#038;p=817</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2013重庆腾讯实习生笔试的两道题</title>
		<link>http://blog.thpiano.com/?p=787</link>
		<comments>http://blog.thpiano.com/?p=787#comments</comments>
		<pubDate>Sat, 20 Apr 2013 04:37:25 +0000</pubDate>
		<dc:creator>suika</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[2013]]></category>
		<category><![CDATA[实习]]></category>
		<category><![CDATA[笔试]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[腾讯]]></category>
		<category><![CDATA[腾讯实习生]]></category>
		<category><![CDATA[重庆]]></category>

		<guid isPermaLink="false">http://blog.thpiano.com/?p=787</guid>
		<description><![CDATA[（今天连bluehost好慢 刚刚被虐回来，稍微总结一下 题的范围很广，从TCPIP协议、数据库、算法与数据结构、计算机系统到语言细节，都有涉及 另外今年的笔试题里有10道选择题、5道填空和加分题的第一题都与去年的题目一模一样 OTL…… 没看去年的题亏死了 挑两道印象比较深的题记录下： （都是去年的题，网上都有公开，应该不算是私自公布试卷了吧） 两人猜数字，范围为[1,100]， 甲写一个数字，让乙猜。 如果乙猜的偏小，甲会说偏小，但是如果某一次甲猜的偏大，乙之后都只会说对或不对。 问： 乙最少可以在多少次内保证猜对？在这种策略下，第一个猜的数字是什么？ 看到这道题，首先可以推导出这两问的答案一定是同一数字。若第一次猜X且偏大，则之后需猜X-1次方能保证猜中，即最少需猜X次。 于是递推一下，设最少猜X次才能保证猜对，则第一次必定猜X 第二次要猜多少呢？第二次猜的时候，要保证在猜偏大的情况下，后面再猜X-2次就能保证猜中，所以第二次要猜X+X-1 同理，第三次若猜偏大，后面要再猜X-3次，所以第三次猜的数为X+X-1+X-2……直至猜了N次之后，猜的数>=100 这就是一个初项为X，公差为-1，项数为N的等差数列求和，即约束方程下求X的最小值 ，时有极值，X约为14 答案就是14 14 两个数组a[N]，b[N]，其中A[N]的各个元素值已知 现给b[i]赋值，b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i]； 要求： 1.不准用除法运算 2.除了循环计数值，a[N],b[N]外，不准再用其他任何变量（包括局部变量，全局变量等） 3.满足时间复杂度O（n），空间复杂度O（1） 在编程之美上出现过类似的 这个题不准用其他变量，那只能在a和b上下手了 我的思路是，对于b[i]来说，可以拆成a[0]*a[1]*...*a[i-1]和a[i+1]*a[i+2]*...*a[N-1]两部分，这两部分用O(n)分别求出来，最后再乘起来就行了 代码见下： 12345678910111213141516171819202122232425262728#include &#60;stdio.h&#62; void foo&#40;int a&#91;&#93;, int b&#91;&#93;, int N&#41;&#123; &#160; &#160; b&#91;0&#93; = 1; &#160; &#160; //乘完左边，存在b[i]里。 此时b[i]表示从a[0] * ... *a[i-1]的积 &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>（今天连bluehost好慢<br />
刚刚被虐回来，稍微总结一下<br />
题的范围很广，从TCPIP协议、数据库、算法与数据结构、计算机系统到语言细节，都有涉及</p>
<p>另外今年的笔试题里有10道选择题、5道填空和加分题的第一题都与去年的题目一模一样 OTL……<br />
没看去年的题亏死了</p>
<p>挑两道印象比较深的题记录下：<span id="more-787"></span><br />
（都是去年的题，网上都有公开，应该不算是私自公布试卷了吧）</p>
<pre>两人猜数字，范围为[1,100]， 甲写一个数字，让乙猜。
如果乙猜的偏小，甲会说偏小，但是如果某一次甲猜的偏大，乙之后都只会说对或不对。
问： 乙最少可以在多少次内保证猜对？在这种策略下，第一个猜的数字是什么？</pre>
<p>看到这道题，首先可以推导出这两问的答案一定是同一数字。若第一次猜X且偏大，则之后需猜X-1次方能保证猜中，即最少需猜X次。<br />
于是递推一下，设最少猜X次才能保证猜对，则第一次必定猜X<br />
第二次要猜多少呢？第二次猜的时候，要保证在猜偏大的情况下，后面再猜X-2次就能保证猜中，所以第二次要猜X+X-1<br />
同理，第三次若猜偏大，后面要再猜X-3次，所以第三次猜的数为X+X-1+X-2……直至猜了N次之后，猜的数>=100<br />
这就是一个初项为X，公差为-1，项数为N的等差数列求和，即约束方程<span class='MathJax_Preview'><img src='http://blog.thpiano.com/wp-content/plugins/latex/cache/tex_dad7241a13d5f241260d69fdf52505ce.gif' style='vertical-align: middle; border: none; ' class='tex' alt="X*N-\frac{N*(N-1)}{2}=100 " /></span><script type='math/tex'>X*N-\frac{N*(N-1)}{2}=100 </script>下求X的最小值<br />
<span class='MathJax_Preview'><img src='http://blog.thpiano.com/wp-content/plugins/latex/cache/tex_b9238db689b9d651daf3a1bdeff77822.gif' style='vertical-align: middle; border: none; ' class='tex' alt="X=\frac{100}{N} + \frac{N}{2} - \frac12 " /></span><script type='math/tex'>X=\frac{100}{N} + \frac{N}{2} - \frac12 </script>，<span class='MathJax_Preview'><img src='http://blog.thpiano.com/wp-content/plugins/latex/cache/tex_133a9ec7a667652e009eb5f16f49d45d.gif' style='vertical-align: middle; border: none; ' class='tex' alt="N=\sqrt{200} " /></span><script type='math/tex'>N=\sqrt{200} </script>时有极值，X约为14<br />
答案就是14 14</p>
<hr/>
<br/></p>
<pre>两个数组a[N]，b[N]，其中A[N]的各个元素值已知
现给b[i]赋值，b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i]；
要求：
1.不准用除法运算
2.除了循环计数值，a[N],b[N]外，不准再用其他任何变量（包括局部变量，全局变量等）
3.满足时间复杂度O（n），空间复杂度O（1）</pre>
<p>在编程之美上出现过类似的<br />
这个题不准用其他变量，那只能在a和b上下手了<br />
我的思路是，对于b[i]来说，可以拆成a[0]*a[1]*...*a[i-1]和a[i+1]*a[i+2]*...*a[N-1]两部分，这两部分用O(n)分别求出来，最后再乘起来就行了<br />
代码见下：</p>
<div class="codecolorer-container cpp geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339900;">#include &lt;stdio.h&gt;</span><br />
<br />
<span style="color: #0000ff;">void</span> foo<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> N<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; b<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #666666;">//乘完左边，存在b[i]里。 此时b[i]表示从a[0] * ... *a[i-1]的积</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> N<span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; b<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> b<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span> a<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666;">//乘完右边，存在a[i]里。a[i]表示从a[i] *...*a[N-1]的积</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> N<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> <span style="color: #000040;">--</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span><span style="color: #000080;">=</span> a<span style="color: #008000;">&#91;</span>i <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666;">//两边乘起来</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> N <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; b<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span><span style="color: #000080;">=</span> a<span style="color: #008000;">&#91;</span>i <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">2</span>,<span style="color: #0000dd;">3</span>,<span style="color: #0000dd;">4</span>,<span style="color: #0000dd;">5</span>,<span style="color: #0000dd;">6</span>,<span style="color: #0000dd;">7</span>,<span style="color: #0000dd;">8</span>,<span style="color: #0000dd;">9</span>,<span style="color: #0000dd;">10</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; foo<span style="color: #008000;">&#40;</span>a,b,<span style="color: #0000dd;">10</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">10</span><span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, b<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></td></tr></tbody></table></div>
<p>我这种写法的缺点是改变了输入数组a，这个不太好。把好写法贴一份：</p>
<div class="codecolorer-container cpp geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #0000ff;">void</span> problem<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #000040;">*</span> a, <span style="color: #0000ff;">long</span> <span style="color: #0000ff;">long</span><span style="color: #000040;">*</span> b, <span style="color: #0000ff;">int</span> N<span style="color: #008000;">&#41;</span><br />
&nbsp;<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;b<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> N<span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;b<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> b<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span> a<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// 分水岭的前半段乘积</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #008000;">&#125;</span><br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp;b<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> a<span style="color: #008000;">&#91;</span>N <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> N <span style="color: #000040;">-</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&gt;=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> <span style="color: #000040;">--</span>i<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;b<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span><span style="color: #000080;">=</span> b<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;b<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span><span style="color: #000080;">=</span> a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// 分水岭的后半段乘积，是从数组尾部向前循环的</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #008000;">&#125;</span><br />
&nbsp;<span style="color: #008000;">&#125;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.thpiano.com/?feed=rss2&#038;p=787</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
