答读者问(30)

最后更新于:2022-04-01 06:35:29

##一个大一学生有关未来技术方向的疑问及答复 **【来信】**  周老师:  您好!  我是一名学计算机专业的大一学生,首先非常感谢您能看这封信。  我大一主要尝试过Java Web后台开发和Linux C++ 后台服务器编程两个技术方向,共积累了3万行左右的代码量。  我想请您帮我指点的问题是:  1.网上很多人认为Linux服务器开发学习难度大、周期长、后劲大,我自己也感到学这个确实比学Java Web开发更难一些,牵扯到操作系统、底层的知识多一些。  请问您认为这个技术方向就业后的后续长远发展怎样?后劲如何?  2.网上有前辈说:“服务器方面的需求终究还是少数,各种服务已经成熟,大家都是拿一个成熟的来用,很少会再去新开发一个,即吃力又不讨好;所以这方面的机会相对少了很多”。  请问您认为Linux C++ 服务器端开发目前以及未来的就业前景、供求分别怎样?  3.我很想以后在学好专业课的前提下,专攻Linux C++/C 后台服务器端编程,就业就找这方面的工作;但是我老是担心未来在Linux C/C++ 的道路上走得会比较艰难,达不到名企对应届生的要求,不能实现自己预先设定的目标:本科毕业以后能够进入BAT工作。  您以过来人的身份看,我应该怎样看待和解决我的这个想法问题呢? 再次感谢您能抽时间看这封信件,学生为占用了您的休息时间深表歉意。祝您生活快乐,工作顺利。 此致  敬礼  2015年7月14日 **【答复】**  同学:  你好! 非常感谢你的来信!作为一名大一学生,你能够积累3万行左右的代码量,是相当不错的。相信你在未来的学习中有更加优异的成绩和更加出色的表现。 你在来信中说到了Linux服务器开发,很抱歉的是我没有从事这方面的开发工作,因此无法给你详细讲解这个技术方向的现状和就业前景。但对于一个软件或行业来说,它会经历快速的发展期和平稳的成熟期,具体来说:  (1) 在快速的发展期中,很多公司都会争着想进入这个市场去分一杯羹,因此对人才的需求量是很大的,就像现在的手机客户端开发一样。  (2) 在平稳的成熟期中,一般会出现几大巨头占领了大部分市场份额的局面,这个时候对人才的需求要相对小一些。各大公司招进去的人,也主要从事软件系统优化、重构等方面的工作。对于你在来信中提到的Linux C++ 服务器端开发,应该就处在这个阶段。 但是,并不能因为一个行业已经比较成熟了,我们就认为没有发展前途了。对于任何一门技术,只要你钻研得足够的深,都是各大企业抢着要的人才。况且,后台开发牵涉到很多操作系统、编译原理、计算机组成原理等底层的知识,把这些知识学好了,你可以找到很多与之相关的工作,而不单单是Linux C++/C 后台服务器端开发。我认识的很多优秀的程序员都对底层相当的了解,你在这个方向上努力是没错的。 顺便提一下,你现在才大一,没有必要将自己的未来设定在某一个技术方向上。在学习好Linux C++/C 后台服务器端开发的同时,你还应该学习一些与之相关的其它方面的东西,像移动客户端开发等,并注意关注最新的科技动向,做一个和时代接轨的人。 最后,在学习的同时,你也应该学会分享,将自己的学习心得写成文章发表到论坛或博客上。再次感谢你的来信,本人新书《**C程序员:从校园到职场**》即将出版,请多多关注! * * * 本人微信公众号:zhouzxi,请扫描以下二维码:  ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-30_5683a1d2cd147.jpg)
';

答读者问(29)

最后更新于:2022-04-01 06:35:26

##三个在校学生有关在校学习、考研、编程语言、未来工作的疑问及答复 **【来信1】**  周学长:  您好,不好意思打扰了,我本科是重庆邮电大学的。学的是微电子,从CSDN上看到了,想麻烦请教几个问题。  昨天研招网上收到了大连海事的一个省实验室的复试通知,调剂的是计算机专硕。正好认识个东软的学长,他说大连海事这些省部级的实验室实力普遍弱,相当于边缘地带,都是搞很多理论性的课题和研究为主,也有物联网的项目,但不多,按他的意思是小实验室其他项目基本接不到。  但好处就是可以正儿八经的学计算机,补算法和数据结构,可以好好的巩固下我薄弱的基础。我一直很想从事数据库数据挖掘方面的,这个实验室也正好有这个方向。  那么问题来了,还是恳请学长指点下:  第一:边缘地带的小实验室出来工作肯定会被看不起,但这个比重究竟有多少?通过加强理论和基本功的学习能否弥补呢?  第二:这个实验室现在看来非常重视算法理论研究,那么将来找工作,是理论层面搞的好的会有优势,还是说项目和实习接的多的学生有优势呢?  第三:工作单位是否非常看重研究生项目阶段的经历呢?是专精一个项目好(只有物联网) 还是说你研究生阶段很多项目都有涉猎好?  谢谢学长,这是我的思考和顾虑,还望给小弟指点下,谢谢了。 **【答复】**  你好!  在考研这个事情上,我总是告知大家要三思而后行,一定要有自己的想法,因为这涉及到自己未来若干年甚至是一生的职业发展方向。  从你的邮件里,我了解到你最大的疑虑是想利用研究生这几年补充下计算机方面的理论知识,但又怕太偏重理论了而不好就业。现实的情况是如果你不想继续深造(读博),那么在研究生阶段一定要做一些实践性强一点的项目,这样对找工作有好处,毕竟用人单位也希望你能够尽快上手,而不需要重新培养很长一段时间。  下面来具体回答你的问题:  问题一:是不是小实验室出来的并不是最重要的,最主要是看你做过什么、学过什么,是不是合用人单位的胃口。举个例子,如果你在研究生阶段做过的项目也是未来的雇主正在做的,那么你就有很大的机会被录用。通过加强理论和基本功的学习只能让你知道的理论知识多一点,关键还是看你的动手能力、实践能力、举一反三的能力,看你拿到一个东西之后是不是能够很快学会它。  问题二:这个要看你未来找的工作的性质,是像研究所里面那样搞理论研究的呢,还是像一般软件企业做产品开发的呢。不过,根据我的了解,一般企业还是喜欢项目和实习经验多的学生,因为他们做过实际的东西,在接触到新东西之后能够更快地上手。在读研期间,这两个方面都不要荒废,在学习的同时要实践,在实践的同时也要学习。  问题三:工作单位确实非常看重研究生阶段的项目经历,因为这显示出了你做事情的能力、态度等。项目的多少不重要,重要的是你从这些项目中学到了什么,是否通过做这些项目提升了自己的能力。如果你做过很多的项目,但基本上都是在打酱油,啥也没学到,那不如专精一个项目来得更好。现在物联网很火,如果做了这方面的有实质性内容的项目,对你未来的就业还是很有帮助的。  研究生阶段与本科阶段很大的不同在于前者对于个人自主能动性的要求更高,你必须要主动地去研究一些东西、去做一些感兴趣的项目。只要你确实学到了真本领,那么找到满意的工作应该不是很难的事情。你的努力决定了你的未来。  我的以上建议,请参考。希望你做出最合适自己的决定,并选择好自己未来的发展道路。感谢你的来信及对我的信任,请继续关注本人博客。 * * * **【来信2】**  周老师,你好!  我是计算机专业的在读研究生,现在对于IT行业的工作还不是很清楚,在学校根本不知道企业里面职位还有具体工作内容,想提前了解一下,现在我所知道的有开发(就是需要编写程序和文档),还有测试,维护,销售,这些都听说过,但是具体工作内容也一点都不了解,所以想请教步入IT行业能做哪些,到时候可以自己选择。 **【答复】**  你好!  IT行业的分工非常的细,我只能就我所知道的情况给出答复,请参考。  企业里面的招聘分为校招和社招两种,对于这两种性质的招聘,企业的选人标准是不一样的。一般的大型企业每年都会有校招和社招的名额,而初创型的小企业更倾向于社招,因为社招的人能够很快独立承担起工作。  为了便于说明,我将IT企业分为两类,一类是技术类企业,另一类是非技术类企业。技术类企业是需要独立开发软件产品的企业,像BAT、华为、中兴等;非技术类企业是不需要独立开发软件产品而以运营为主的企业,像三大运营商。这里,我介绍一下技术类企业的职位和具体工作内容。  对于计算机相关专业的学生来说,应聘的岗位主要有这几个:开发、测试、运维和销售。其中,又以开发和测试居多。  开发人员,也就是所谓的程序员,主要做这些工作:  1) 对软件需求说明书进行评审,明确需要开发的软件的功能。  2) 编写软件详细设计、单元测试和集成测试规程文档。软件详细设计文档是最重要的文档,在里面,要写清楚自己程序的流程、函数设计、异常保护考虑等。在动手写程序之前,一定要将软件详细设计文档写好,等评审通过了再写代码。  3) 编写代码,用程序实现软件的功能。很多人认为的软件开发就是写代码,其实这是一种很狭隘的理解,写代码在整个开发流程中,只占了很小的部分。  4) 程序写好之后,开发人员要对它进行单元测试和集成测试(也叫自测),确保程序的正确性。这里就出现了“测试”二字,但与软件测试所做的“测试”是不同的,他们做的是“系统测试”。等自测通过之后,并且相关文档也写好之后,就可以提交程序版本,供测试人员进行相对专业的测试了。  5) 解决软件故障并制作软件升级包。是程序就会有bug,不管是测试中发现的问题还是客户反馈回来的问题,开发人员都要在第一时间将其解决掉。另外,很多软件都会有版本的演进,这就需要对已经运行起来的软件进行升级,开发人员要制作软件升级包并指导相关人员进行升级操作。  测试人员主要做这几件事情:  1) 搭建测试环境。这个是很重要的,也是比较难的事情。什么是“测试环境”呢?就是说,不管什么软件,都有个运行的条件,如操作系统类型、参数设置及配套软硬件设施等,这些统称为“环境”。为了保证程序功能的正确性,要在软件发布之前,尽量模拟软件实际的运行环境,这就是搭建测试环境时要做的事情。很多软件在正式商用之后出问题,就在于测试的时候没有还原现场的环境所致。  2) 对软件进行系统测试并输出测试报告。所谓系统测试,就是指将配套的所有软件都运行起来,看一下所有的功能是否正常。当出现问题的时候,要及时和开发人员联系,以修正软件缺陷。  3) 指导现场人员安装软件程序,并在必要的时候亲自出差到现场去安装软件。因此,测试人员也可能会经常出差的。  运维人员的主要任务是保证软件产品的正常运行,如果发现产品有故障,要在第一时间叫专业人员来将之解决掉。运维人员一般不会接触到软件的程序代码,但会编写一些简单的脚本来获取软件运行状态或安装定时任务等。  销售分为售前和售后,据我的了解,售前的主要工作是向客户推销软件产品,力求签订软件购置合同;而售后的主要工作是安装软件产品,并对软件产品进行维护。很多销售人员都是由开发和测试人员转过去的。例如,有些开发人员工作了几年过后,想换一下工作的性质,就可以考虑转到销售岗位上去(在大型企业里面,很多开发人员都是这么做的)。 一个人步入IT行业能做哪些,取决于这个人的综合能力。我总结了一下,对于研发类工作岗位(开发和测试),要求有以下这些:  1) 对具体编程语言的要求。如C/C++开发工程师、Java开发工程师、数据库开发工程师等,就需要大家分别熟练掌握C/C++、Java和SQL语言。因此,大家在学校一定要熟练掌握至少一门编程语言。  2) 对专业知识、英语等的要求。如果想应聘通信类的研发岗位,那么大家就要对通信原理、通信网、移动通信等基本概念和原理有一定的了解;如果应聘计算机类的研发岗位,那么大家就要对计算机组成、计算机操作系统、计算机网络等比较熟悉。此外,某些岗位对英语也会有要求(本科生至少过4级,研究生至少过6级)。  3) 对学习能力的要求。一般公司都会要求应聘者具备较强的学习能力,因为到了单位之后,要学习的东西还很多。如何体现大家的学习能力呢?在校的获奖证书、所做过的项目、实习经历等,都是很好的证明。  4) 对人际交往能力的要求。很多公司会要求应聘者具备较强的沟通能力,这是因为大家是在一个团队中工作,不会开口是不行的。在学校的时候,大家要适当地参加一些社团和班级所组织的活动,培养自己与别人打交道的能力。 对于在校学生来说,可以看一下心仪公司的心仪岗位对应聘者的要求,这样开展针对性的学习,你会感觉到每天过得都很充实。  我的以上意见,是从我自身的经验为出发点的,不一定都对,请参考。能够去往哪个公司,取决于你每天的努力和选择的方向,请根据你的实际情况制定出学习的计划并坚持执行之。希望你找到满意的工作。再次感谢你的来信,请继续关注本人博客。 * * * **【来信3】**  周老师(可能叫你学长更合适,虽然我不是南邮的),我现在大四了,研究生阶段要读电子与通信工程。现在在导师这里帮忙做东西。我本科学的是集成电路,但因为和同学给外面的人做个小项目,就学习了软件开发(其实主要是c#),现在也是做的c#,手里面现在有两个需要帮老师做的东西,也是用c#。现在有几个问题想请教学长,希望你能给点建议。谢谢。  1.c#现在好多人都不看好,我现在也不知道需要继续深入研究还是现在这样就去学习别的。老师让我赶紧做完去学c++。如果我学c++的话,c#我还有必要去继续学习吗?  2.研究生阶段要学电子与通信工程,如果只学习软件的话总感觉和软件专业的相比没有优势,我看学长你微博是中兴通讯的,不知道对于这种做嵌入式应用层(老师说不让我了解底层,不做驱动啥的)的要求是什么呢,如果将来有幸我也想去中兴,所以我想看一下要求把握方向。  3.在做现在的两个小软件以前吧,我对自己还是比较自信的(可能也是自大吧),觉得学习的挺多了。现在自己写总是容易出现各种问题,有时候写着写着就写不下去了。我想知道学长在一个人的时候是怎么让自己坚持学习的。  一点小事就写这么长,总感觉很抱歉,学长你有空就和我说一下。  非常感谢你的意见,祝你工作顺心,快快乐乐每一天。谢谢你。 **【答复】**  同学,你好!  软件行业变化很快,没有哪一项技能是包治百病的良药。为了用不变应万变,我们要掌握解决问题的思路和方法,要抓住变量后面的不变量。对于你即将要读得研究生来说,很多知识在本科阶段其实都已经学过了,你一定要主动地、深入地研究一些自己感兴趣的课题,以此来训练自己的思维,千万不要流于表面、浅尝辄止,这样就失去了读研的价值了。  下面来具体回答你的问题。  1.有关编程语言的问题。  每一门编程语言既然存在,那么就有它存在的价值。不管是C#也好,C++也罢,都有它们特定的应用场合。因此,说不看好某门编程语言,其实是比较片面和狭隘的。更进一步说,你还不知道自己未来要从事什么工作,因此千万不要说自己只需要学习某种编程语言就行了。你现在要做的是根据自己的兴趣及未来规划来学习编程语言,当然,导师的意见也可以参考,但最终的选择权在你自己手上。你要学习的编程语言不限于C#和C++,但比较熟悉(或者精通)的编程语言最好不要超过两种。 2.有关未来工作的问题。  很抱歉,我也不清楚对于嵌入式应用层的要求是什么,但你的老师不让你了解底层其实是不对的。如果你不了解底层,那么你就不会明白计算机和程序运行的机理到底是什么,这样对于你学习更加高端的知识是不利的。科学技术发展到今天,很多专业之间已经是相通的了,更不要说计算机专业和通信专业了。你所谓的没有优势,我理解就是自己只会编写代码。每个人都有一个专业(也就是研究生阶段的研究方向),把自己专业领域的大部分知识都弄精通了,这就是你的优势。不光是中兴,几乎任何公司都希望应聘者同时具备软实力和硬实力,软实力包括:分析解决问题的能力、与人沟通交流的能力、承受压力的能力、自我调节的能力、分享知识经验的能力等,硬实力包括:专业能力(学校里面的课程主要是培养这个)、业务能力(包括编写代码和文档的能力等)等。希望你在学校好好培养这两种能力。 3.如何坚持学习的问题。  学习是一件比较枯燥的事情,编写程序也一样。你的这种情况,我也遇到过,一般说来,我是这样克服学习障碍的:  (1) 在感觉到有点疲惫的时候,我会从座位上站起来,到房间外面去呼吸一下新鲜空气。等感觉疲劳感消失之后,再来接着学习。  (2) 在学习的时候,我会将社交软件(如QQ、微信、微博等)关掉,让自己全身心地投入,避免分心。  (3) 如果确实学不下去了,那么我不会再强迫自己学习,我会选择去参加一下体育锻炼,或者去看一场电影,等自己状态好的时候再学习。  此外,你可以找几个志同道合的“学友”,大家一起学习,共同提高。当然,你一定要学会利用互联网来学习,向网上的牛人们学习。 我的以上意见,请参考。希望你利用好研究生三年的学习时光,学到过硬的本领。不管别人怎么说,只有你自己才知道想学到什么、想往哪个方向发展,只有你才能决定自己的未来。加油! * * * 本人微信公众号:zhouzxi,请扫描以下二维码:  ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-30_5683a1d2cd147.jpg)
';

答读者问(28)

最后更新于:2022-04-01 06:35:24

##一位在校本科生有关IT学习的疑问及答复 **【来信】**  周学长,你好。我现在是南京邮电大学的一名本科生,可以问你一个问题吗?其实我对it这一行业很感兴趣,但我的本专业不是学这个的。我自学完了C++,程度大概是可以写一个很初级的类似学生管理系统这样。然而我不知道之后应该干嘛了。你可以给我一些指点吗?谢谢。 **【答复】**  同学,你好!  你能在大学里面找到自己感兴趣的东西,作为学长,我也为你感到高兴。很多人在大学里面浑浑噩噩地度过了四年,最后发现所学的专业不是自己感兴趣的,找的工作也不是本专业的。希望你能够将你这个兴趣的火花延续下去。  你所学的专业不是计算机专业,这就为你的学习增加了难度。如果单单只是靠自学,那么你会发现这个学习的过程很苦,而且很多重要的知识点不一定能够把握好。因此,我的建议是这样的:  第一,在学习本专业的同时选修一些计算机专业的课程,或者是去旁听一些重要的计算机专业课程,像数据结构、操作系统、计算机组成原理、数据库技术等。相比自学来说,老师讲的还是要更全面一些,学习的效果也要好一些。现在虽然有很多知识都要靠自学,但我认为课堂学习仍然是最好的学习方式,这也是现在很多学校和培训机构存在的理由。  第二,学习知识要参照课本,但不要太依赖课本。课本可以教给我们一些基础知识,可以让我们对一个知识体系有较为全面的了解。要想对一个体系有深入的认识,还需要我们多练习和实践,多查阅相关的资料。因此,在学了某门课程之后(如C++),你一定要上网查询所学的知识到底有哪些具体的应用,看一下自己的水平与实际工作岗位要求之间的差距有多大。对于自己比较薄弱的环节,要采用恰当的方式去弥补。  第三,多总结,多实践,多分享。在学习的过程中,你一定要学会总结,最好将总结形成文章,这样之后想要查看也比较的方便。计算机行业非常看重一个人的实践能力,因此,你也要多动手编写程序。很多程序在课本上看着是对的,但如果你将它们敲到电脑中,也许就不是那么一回事了。另外,你也要学会将自己的学习心得分享出去,我建议你将它们写成文章,发表到博客上,利用网络的力量来帮助你学习。学习的过程非常的苦,你一定要坚持住。  第四,课本上的程序比较的简单,也许不能满足你求知的欲望,那么你可以到一些编程论坛上面去寻找一些有意思的问题来练手,在与大家的切磋中成长和进步。另外,一些出名的开源项目也值得你花心思去研究。顺便提一下,我的博客上也会不定期发表一些比较贴近项目实践的编程问题及解答,你可以关注一下。 在大学里面,大家拥有最多的就是时间,最容易被浪费掉的也是时间。你一定要学会合理利用时间,要制定适合自己的学习计划。你要多多向周围的优秀的人学习,并学会利用网络来学习。  非常感谢你的来信,祝你学习愉快! * * * 本人微信公众号:zhouzxi,请扫描以下二维码:  ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-30_5683a1d2cd147.jpg)
';

答读者问(27)

最后更新于:2022-04-01 06:35:22

##一个大一学生有关未来规划的疑问及答复 【来信】 周老师: 您好! 我是山东大学计算机科学与技术学院的大一新生,自从选择了这个专业以后,经常需要看别人的技术博客来学习知识,看到您的博客后十分敬佩,您这种工作勤奋又乐于帮助他人解决疑惑的精神实在是令人敬仰。 学生有个关于大学学习方向的问题,想了很久,但是还不是很清晰。一直想给您写信咨询,但又怕耽误您的工作,在这里先谢谢您能为我看这封信了。 首先介绍一下我的情况。 1)我大学四年的目标:不读研究生,直接去Microsoft、Google、BAT其中之一的一家公司做软件开发工程师。我通过搜索和浏览这几个公司的招聘信息发现,这几家公司该职位的共同需求是:有深厚的数据结构与算法知识基础、精通C++/Java语言、有项目经历、竞赛获奖的优先。 2)我现在的状态是:学业成绩位居上游,从去年开学到现在一直在从事ACM竞赛,目前已经刷完了《算法竞赛入门经典》上的200来道题目,对竞赛中的主流题目都有了一个大体的认识,但是越来越感到ACM竞赛的力不从心(高中从未搞过竞赛)。目前正在学习严蔚敏的《数据结构》。性格较内向。 我想请您帮我指点的问题是: 1.我是否应该退出ACM竞赛? 对于这个问题,我思考了很久,我的想法是这样的: a)我搞ACM的目的其一是为了拿奖牌,希望这样在求职的时候能为我的简历增添一点分量。 **那么请问如果我的简历上没有任何ACM获奖的经历,但是有奖学金和项目经历+山大985、211的牌子,以您的经验来说,大公司是否会给我一个笔试的机会?** b)随着刷的题目越来越多,逐渐感觉到要想ACM获大奖(金牌及以上)我必须几乎将全部的时间都用来刷题目,但是我的目标是成为一名优秀的软件开发工程师,这样的话,对ACM的过度投入势必会影响我的其余工程能力的提升,同时影响自己其他知识的学习。诸如:操作系统、数据库、计算机原理都是构建完整的计算机知识体系所必需的知识。 **请问根据您的经验来看,想成为优秀的软件开发工程师但是却将大量时间投入到编程竞赛中是否不正确?是否有点偏科?** c)参加ACM的另一个目的是是学好数据结构与算法,但是研究了一下笔试面试题目后发现竞赛中常用的数据结构在求职时很少用到,并且如果仅仅为了学好数据结构与算法根本没有必要刷ACM题目,个人感觉多读好书、多敲代码实践,刷LeetCode+看《编程之美》、《编程珠玑》等等牛的书就够了。 **以上是我关于ACM竞赛的看法,还请您提出建议与批评。** 2.为了得到目标公司的职位,数据结构与算法知识到底要学到什么程度? 我认为就是达到能熟练做出名企招聘题目的程度,暂时的规划如下 1)第一阶段:知识学习阶段(2015年3月——大二上学期结束) 读完《数据结构C语言版》、《Algorithm Design 》、《Algorithm》、《Introduction to Algorithms 》等等牛的书并总结写笔记(只看书学不会的,必须得自己大量地敲代码才能熟练掌握),做对应知识点的5道LeetCode题目来熟练巩固所学的知识。 2) 第二阶段:真题训练总结、找实习准备阶段(大三上学期中间——大三上学期寒假结束) 一方面不断复习第一阶段的笔记,真正熟练掌握;另一方面,做程序员笔试面试考的数据结构与算法的题目+阅读《编程之美》、《编程珠玑》、《程序员面试宝典》等等笔试面试指导类的书籍并总结查漏补缺。目标是大三下学期的时候参加名企的实习生招聘能拿到理想公司的实习offer,然后好好表现争取能够直接转正。 **请问根据您的经验来说我的任务安排的合理吗?恳请您提出意见与批评。** 3.我应该专攻Java还是C++? 从网上了解到的Java工程师的需求最大,但是有的统计数据也显示C++的工程师薪资最高,这不知道哪个更好?我的C++/java学的目前的只能算是入门,希望能提前想好专攻什么语言,在以后的学习过程中能有所侧重的去学习。 **我看的很多人写的面经,都提到好像C++/C是必考的知识是吗?那么就算专攻Java,《C++ Primer》、《Imperfect C++》、《C与指针》等等牛的C/C++方面的书也要看吗?恳请您提出意见与批评。** 4.我应该什么时候开始专门学习某一种编程语言? 现在正在学习数据结构,感觉数据结构与算法的实现与语言的特性关系不大,主要是思想正确都能实现,因此,我感觉学习数据结构和算法的过程中对语言的学习并没有太大的帮助,只是熟悉基本的语法而已,而想精通一种语言要大量阅读相关的书籍+大量敲代码实践。因此,我想在做项目的同时加深对某一种编程语言的学习。也就是说,先主攻数据结构与算法,然后同时专攻编程语言+项目开发。 **您感觉这样安排合理吗?我想以此为依据来调整学习的进度。恳请您提出建议与批评。** 5.怎样权衡学习基础学科知识与学习技术的关系? 我从网上查阅了这方面的观点。一部分人认为:项目开发用不到数据结构与算法等等学科基础知识,只需要熟悉类库并会调用就行了;另一部分人认为:数据结构与算法是“内功”,而流行的技术是“外功”,从长远的角度来说,只有内功扎实,才能在软件开发这条路上走得更远,如果内功不好,那么永远只是在堆砌API,不会成为优秀的工程师的。就是说,数据结构与算法等等学科基础知识决定一个开发人员走多远,会不会开发用的技术决定开发人员能不能开发。 **请问根据您的经验,您感觉怎样认识这个问题呢?怎样权衡学习基础学科知识与学习技术的关系呢?从找工作的角度来说,我应该怎样分配这两方面学习的时间呢?或者说这两个方面我应该分别达到什么样的要求呢?** 6.我应该在什么时候参与一个团队进行项目的开发? 大一上学期的时候我进入了一个做安卓开发的团队,但是那时候痴迷于ACM竞赛,于是就退出了。 **因为我想大四出去实习,希望能在我出去实习之前有一个能拿的出手的项目,您感觉我什么时候去搞项目的开发比较合适呢?得用多少时间才能把自己做项目这方面的能力提升上来,能做出自己拿手的项目?现在想的是大二上结束后就开始做。恳请您提出宝贵的意见与批评。** 7.从找到好工作的角度来说,我除了有硬功夫(真正掌握知识)外,有哪些很重要的软实力要培养呢? 我是个比较内向的人,不爱与人交流,本想着上了大学能够锻炼一下自己的各方面能力,比如说交际能力、合作能力、领导能力等等软实力,但是随着学习的深入,发现要想达到名企的招聘要求(有深厚的数据结构与算法知识基础、精通C++/Java语言、有项目经历、竞赛获奖),自己要学的知识非常多,自己还没读的好书籍非常多,感觉自己在培养专业硬能力这一方面都必须全力以赴,现在我每天除了睡觉吃饭外的其余时间就是在自习室里学习知识。 **我现在担心的就是如果我的专业技术能力达到了招聘的要求,但是会不会因为在面试中因为沟通能力、交际能力、应变能力不好而与理想的offer失之交臂呢?感觉时间真的是不够用的。您感觉那些面试能力在找工作前多准备多训练一下能行吗?怎么样权衡培养软实力与硬实力的关系呢?恳请您能给予指导。** 学生的计划性比较强,感觉明确目标以后,应该尽快的明确达到目标的阶段与方法,因此问题比较多。但我绝不是那种“想得太多,做的很少”的人,每个阶段的计划我都会细分到每一天去全力完成。 以上是我的疑惑与自己对疑惑的思考,深知自己的知识浅薄,眼光见识短浅,因此对一些问题的看法不免有些功利与“天真”,十分希望您能结合自己的经验与经历对我的疑惑与看法提出建议与批评。 学生深知自己对于如何进入IT龙头企业、如何在校期间培养自己的工程开发能力、如何成为一名综合素质优秀的IT精英知之甚少,在这里十分希望您能够结合您的经验与经历对学生还没想到的地方做一些补充与指点。 再次感谢您能抽时间看着封信件,祝您生活快乐,工作顺利,事业有成。   此致 敬礼                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      山东大学计算机专业学生                                                                                                                                                                XXX                                                                                                                                                                2015年3月27日   【答复】 你好! 首先要感谢你的来信,你是至今为止,我收到的读者来信中写得最详细的。 从你的字里行间中,我感觉到你是一个对未来有着明确规划、有着殷切期盼的人,而且,你的思维很清晰,行动的目的性也很强,相信你是一个很有前途的学生。 作为过来人,我深知在大学里面,像你这样的学生是很少的,因此,我才更加感觉到你这般勤于思考、不断进取的精神的难能可贵。由于你提的问题比较多,涉及到的面比较的广,我也只能从自身的经验出发给出回复,不一定都正确,请认真参考。 **1.是否应该退出ACM竞赛?** **a) 那么请问如果我的简历上没有任何ACM获奖的经历,但是有奖学金和项目经历+山大985、211的牌子,以您的经验来说,大公司是否会给我一个笔试的机会?** 周:大公司给笔试的标准是应聘者的简历与岗位要求的契合度高,因此,并不是说你有获奖经历、项目经历,抑或是名校出身就一定行的。举个例子,如果一个岗位要求你会数据库,而你的简历上面写的精通C++,并且有很多获奖的经历,那也可能会被淘汰掉。因此,你要根据心仪的岗位来安排自己的学习,不要盲目追求一些很光鲜的东西。 b) **请问根据您的经验来看,想成为优秀的软件开发工程师但是却将大量时间投入到编程竞赛中是否不正确?是否有点偏科?** 周:我认为,一个优秀的软件开发工程师需要具备以下素质:1)专业知识牢靠;2)学习能力强;3)动手能力强;4)善于沟通交流;5)乐于分享。也就是说,“优秀”是一个综合素质,编程能力强的人不见得就是一个优秀的软件开发工程师。因此,除了编程之外,你在学校里面还要注重其它方面的学习。 c) **以上是我关于ACM竞赛的看法,还请您提出建议与批评。** 周:我本人没有参加过ACM竞赛,但参加过其它的竞赛。总的说来,竞赛的目的与我们平时学习的目的是不一样的。一般说来,竞赛的持续时间不长,参与的目的是为了获奖,而平时的学习却是一个长期的过程。要想把专业基础打牢,靠参加竞赛是远远不够的,还是要注意平时的学习,要日积月累。要想学好数据结构与算法,最可行的办法就是多看好书、多编写代码、多总结、多分享。   **2.为了得到目标公司的职位,数据结构与算法知识到底要学到什么程度?** **请问根据您的经验来说我的任务安排的合理吗?恳请您提出意见与批评。** 周:我对在校学生的建议就是利用大一大二的时间把专业基础课学好,多看点书,并培养自己动手实践的习惯。等到了高年级(如大三)的时候,再考虑专攻某一方面或实习的事情。你这两个阶段的安排还是比较合理,但要制定好计划,并遵照执行。   **3.应该专攻Java还是C++?** **我看的很多人写的面经,都提到好像C++/C是必考的知识是吗?那么就算专攻Java,《C++ Primer》、《Imperfect C++》、《C与指针》等等牛的C/C++方面的书也要看吗?恳请您提出意见与批评。** 周:作为在校学生,其实你无法确定未来自己要从事哪方面的工作。即使你确定未来要做Java开发,那么C++还是要学的。在实际的软件研发工作中,有时候某个任务用这种语言编写较好,而另一个任务又要换一种语言来做。因此,在学校的时候,尽量做到多学几种语言(不限于Java和C++),但比较熟练的语言尽量不要超过两种。   **4.应该什么时候开始专门学习某一种编程语言?** **您感觉这样安排合理吗?我想以此为依据来调整学习的进度。恳请您提出建议与批评。** 周:数据结构确实与编程语言的关联性较小,但如果你用某种语言来实现数据结构,可以同时学到编程语言和数据结构。你想先主攻数据结构与算法,然后同时专攻编程语言+项目开发,这样是不合理的。在学习数据结构与算法的同时,你也要学习编程语言,用学到的编程语言来实现数据结构或算法。在你有一定的基础之后,再从事项目开发。另外,在学校,基本上没有专门学习某一种编程语言这种说法,因为你要学习不止一种编程语言。   **5.怎样权衡学习基础学科知识与学习技术的关系?** **请问根据您的经验,您感觉怎样认识这个问题呢?怎样权衡学习基础学科知识与学习技术的关系呢?从找工作的角度来说,我应该怎样分配这两方面学习的时间呢?或者说这两个方面我应该分别达到什么样的要求呢?** 周:我赞成数据结构与算法是“内功”,而流行的技术是“外功”这种说法。现在的IT技术日新月异,新技术层出不穷,而基本的原理是不会变的。如果你只是为了追逐流行的技术,那这样做是很累的。数据结构与算法永远不过时,计算机底层知识永远不过时,各种好的学习习惯永远不过时。大学四年是最好的打基础的时光,你一定要将专业基础学好,在重点打基础的时候,你也可以关注一下当今流行的技术,做到不落伍。在找工作的时候,也以考查应聘者的基础为主。建议你把80%的学习时间拿来打基础,20%的时间拿来学习技术。   **6.应该在什么时候参与一个团队进行项目的开发?** **因为我想大四出去实习,希望能在我出去实习之前有一个能拿的出手的项目,您感觉我什么时候去搞项目的开发比较合适呢?得用多少时间才能把自己做项目这方面的能力提升上来,能做出自己拿手的项目?现在想的是大二上结束后就开始做。恳请您提出宝贵的意见与批评。** 周:我建议大三的时候再参与一个团队进行项目的开发。因为前两年你的主要任务是把专业基础打好,尽量不要分心。提升做项目这方面的能力不是一朝一夕的事情,只有通过长期的锻炼和实践才行。也就是说,一个人的漫长的职业道路会不断培养这个人的做项目的能力。做项目的功利性不能太强,尽量做出能够解决实际问题的东西,否则就成了为做项目而做项目了。 **7.从找到好工作的角度来说,我除了有硬功夫(真正掌握知识)外,有哪些很重要的软实力要培养呢?** **我现在担心的就是如果我的专业技术能力达到了招聘的要求,但是会不会因为在面试中因为沟通能力、交际能力、应变能力不好而与理想的offer失之交臂呢?感觉时间真的是不够用的。您感觉那些面试能力在找工作前多准备多训练一下能行吗?怎么样权衡培养软实力与硬实力的关系呢?恳请您能给予指导。** 周:一个软件工程师需要具备以下能力:1) 硬能力。包括:专业能力(学校里面的课程主要是培养这个)、业务能力(包括编写代码和文档的能力等)等。2) 软能力:包括:分析解决问题的能力、与人沟通交流的能力、承受压力的能力、自我调节的能力等。你就要在学校里面注意培养以上两种能力。具体而言,除了学习专业知识、动手编写程序、做项目之外,你还要多与人沟通、多参与团队活动,建议你参加一些社团活动,以此来培养自己的“软能力”。“软能力”的培养是潜移默化的,不会立竿见影。另外,建议你不要做一个大学里面的“苦行僧”,要享受大学生活的方方面面。   我的以上建议,请参考。在大一的时候,你就有如此详实的规划,相信你的未来是可期的。但为了实现自己的目标,你一定要脚踏实地,要学到真正的本领,要多向周围的优秀人物学习,多总结和分享。在此,建议你阅读李开复老师写给大学生的七封信及贺利坚老师的《逆袭大学—传给IT学子的正能量》一书。 最后,愿大学生活为你插上腾飞的翅膀,愿你的大学生活精彩无比!     周兆熊 2015年3月28日       (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(26)

最后更新于:2022-04-01 06:35:19

##一个研一学生有关编程语言及未来工作的疑问及答复 【来信】         学长,你好!         打扰你了,我是南邮计算机学院研一学生,一年前就关注你的微博,感觉你的博客内容很有质量。想请教你几个问题:          1\. 我现在比较迷惑,主要面临一个选择问题,以前我学通信的,java、C++一点都没有学过,C语言有点基础,但是从来没有实际应用过,现在就想学一门程序语言设计,宿舍人都学java,都说java简单,工作好找,他们也都有java基础,所以我比较迷茫,(说实话,我容易被别人的话所影响)不清楚这些程序语言在实际开发中到底是什么状况。          2\. 以后从事it技术方面工作是不是就是开发人员(程序员),程序员为什么每天要加班到九、十点?          希望能得到前辈的帮助。   【答复】        你好!        首先感谢你对我的博客的评价,我写博客的目的是希望对大家有所帮助,希望在校的学生或工作的朋友能够从中得到启发。         作为研一的学生,你一定要对未来的工作有一个大致的规划,要对当今的就业现状有一个大致的了解。这样等到了你求职的时候,才能够做到心里有数而不慌乱。        下面来具体回答你的问题。        第一,有关编程语言在实际开发中的状况。        有关编程语言孰优孰劣的问题是早已有之,特别是对于找工作的学生来说,自己所掌握的编程语言就决定了自己的未来的工作和发展方向。C/C++语言主要编写靠底层的软件多一点,而Java语言主要编写应用级软件多一点。        像中兴和华为这样的大型通信设备制造商,C/C++程序员和Java程序员都在招;而像百度、腾讯、阿里巴巴这样的互联网公司,基本上都要求程序员会Java。对于很多初创型公司来说,基本上清一色招的都是Java程序员。也就是说,现在Java程序员的岗位更多一点。为什么会出现这种情况呢?        1) Java语言比C/C++更容易上手。        2) 用Java语言编写的程序几乎都是直接面向客户的,经济利益更明显。        3) 现在移动互联网上的机会很多,这也带来了许多安卓开发的工作机会,而Java语言是主要的开发语言。        因此,学习Java可能会使自己在未来找工作的时候的选择更多一点。        第二,有关程序员的定义及工作状况。        从事IT技术方面工作的不一定都是程序员,程序员指的是那些整天和代码打交道的IT从业人员。像中兴华为里面从事销售和维护的人员也是从事IT技术方面,但他们就不是程序员。        并不是每个程序员每天都要加班到九、十点,造成程序员加班的原因有以下几个:        1) 手上的任务太多,在规定的上班时间完成不了。        2) 客户反馈的问题比较紧急,需要加班加点将之解决掉。        3) 上班的时候没有时间来学习,只有利用加班时间来充下电。        不过,总的说来,加班对程序员来说是家常便饭。如果你想成为一名程序员,那么就要有长时间工作的心理准备。        以上的回复只是个人的一点看法,请参考。希望你好好利用研究生阶段的短暂的时光,学到真本领,并找到满意的工作。再次感谢你的来信,请继续关注本人博客。                                                                                                                                                                               周兆熊                                                                                                                                                                 2015年3月25日   (本人微博:[http://weibo.com/zhouzxi?topnav=1&wvr=5](http://weibo.com/zhouzxi?topnav=1&wvr=5),微信号:245924426,欢迎关注!)
';

答读者问(25)

最后更新于:2022-04-01 06:35:17

##一个大三学生有关专业学习的相关疑问及答复 最近,在CSDN博客上,我收到了一位大三学生发来的私信,内容如下:        周老师:        你好,我是浙大一名大三学生,是自动化转计算机的,只有一点C和C#基础,没动手写过什么正式的程序,现在静下心来想好好学点东西,好在毕业的时候找个工作,我现在要怎么样的学习,用什么的方式,具体要学一些什么,感觉很迷茫,希望可以得到你的一些详细的建议,万分感谢!!!          我的答复如下:        同学:        你好!        从你的来信中,我感到了你的一丝焦虑。确实,在浙大这样一个人才济济的学校,在如今中国这样一个竞争激烈的大环境下,包括你在内的很多学生都在迷茫中前行。我之前也收到过很多学生发来的邮件,他们都渴望有人能够带他们走出迷茫和困惑。我经常将自己在工作中的些许感悟发到博客上,如果我的回复能够帮到你们,那么我写作分享的目的也就达到了。        你的来信透露出了你的以下几个情况:        第一,你是从自动化专业转到计算机专业的。        第二,你的计算机专业底子比较薄弱(只有一点C和C#基础)。        第三,没有做过相关的项目(没动手写过什么正式的程序)。        如今,你已是大三,想为毕业做好准备,为未来的工作做好准备。        针对你目前的情况,我的建议是这样的:        第一,要想把计算机专业课程学好,专业基础是必备的。虽然你是奔着找工作过去的,但面试和笔试中的问题多以专业基础课的知识为主。因为你离毕业还有一年多的时间了,没有充足的时间来将每门专业基础课学透,所以,你只能挑几门实用的(对找工作有利)、重要的专业基础课来重点学习。除了编程之外,我建议你从现在开始突击这几门课程:计算机体系结构、计算机组成原理、数据结构(或算法)、计算机网络。参考书目可以采用教材,也可以到图书馆去借一些经典的书籍。        第二,一定要多动手编写程序。你有一点C和C#基础,那么我就建议你现在专攻一门编程语言。C语言用于编写靠底层的软件多一点,而C#主要是面向网络的编程。你可以根据自己的兴趣来选择。如何来提高自己的编程能力呢?1) 你要熟读一本经典的编程语言书籍,将上面的例子程序全部看懂,并亲自动手将书上的程序敲到电脑上去,然后试着自己单独编写程序,看写出来的程序与书本上的例子程序相比,有何优缺点。2) 你一定不要仅局限于书本,除了书本上的程序之外,你还要到其他地方去找一些编程的题目来做,例如,你可以到网上去搜索有意思的小程序来练手,CSDN网站上就有不少编程的题目,你可以去看一下。3) 在学习的过程中,你有任何的心得体会或经验教训,都可以写成文章记录下来,最好发表到博客上,让更多的高手来指点你,通过“学习-->发表博客-->再学习”这样一个良性循环,你的自信心就会建立起来了。        第三,如果有机会,你一定要到单位去实习,要看一下实际的工作是怎么样的。通过实际的工作,你不仅能够看到自己所学知识的用处,还能够提高自己的学习能力,同时为自己的简历添光增彩。如果你没有机会出去实习,那么你可以看一下你所在的学院的老师的手里面有没有适合你的项目,你可以主动请求加入。这样,通过在实践中的锻炼,你能够学到很多课堂上学不到的东西。        当然,我上面说了那么多,最主要还是要看你是否能够坚持学习。只要你有持续学习的勇气和毅力,那么加上我上面说的方法,就一定能够学到东西的。如此,顺利毕业、找到工作就是水到渠成的事情了。        如果你想学习C语言的知识,那么,你可以参考我的博客:[http://www.zhouzhaoxiong.com/category/c-language](http://www.zhouzhaoxiong.com/category/c-language)。          我的以上建议,请参考。希望你好好把握在校的最后的学习时光,努力学习。祝你找到满意的工作。再次感谢你的来信,请继续关注本人博客。       周兆熊 2015年3月3日       (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)  
';

答读者问(24)

最后更新于:2022-04-01 06:35:15

##一个大二学生有关数据结构学习的疑问及答复 最近,在V众投上有一个标题为“最近学习数据结构陷入了死循环大脑一片空白”的问题([http://www.vzhongtou.com/question/744](http://www.vzhongtou.com/question/744)),具体内容如下:         大一下学期学历c语言 学了半吊子 大二一开学就开始讲数据结构 没学过汇编啥的 我知道c语言的指针很重要就复习了指针现在对指针有所了解 老师讲课是一星期讲两节大课 一大章一节讲课一节上机 只讲伪算法 现在讲到树了感觉太抽象了完全搞不懂 本人数学基础比较薄弱 另外感觉自己的逻辑和抽象思维有些差 哪位前辈能帮我解答一下 在此先行谢过了        作为过来人,我的答复如下:         你好!        《数据结构》是计算机专业一门比较重要的基础课程,不仅如此,“数据结构”在实际的软件开发项目中的应用也是很广泛的。因此,在校学生一定要把它学好。         根据你的描述,你们是大二上学期就学习《数据结构》这门课程了,学校可能考虑到你们刚学了C语言,想趁热打铁地把用C语言描述的《数据结构》也给教授了。         根据我个人的经验,你可以采用如下方法来学习这门课程:         (1)    在上课之前,一定要提前预习,把下堂课要讲的内容大致过一下。对于某些比较感兴趣或想要特别了解的知识,一定要作上标记。等到了上课的时候,要仔细聆听老师的讲解,特别是之前做过标记的知识点。         (2)    在上课的时候,如果老师在讲解算法,你一定要动手跟着写,将代码或流程图写到一个纸质的笔记本上。俗话说,“好记心不如烂笔头”,手写是最好的加强记忆的方法。你一定不要嫌麻烦,不要一堂课下来也没有动过笔。         (3)    在上机的时候,看到一道题目,你不要急着就开始敲代码或翻书看。要先将自己的大致想法写到纸质的笔记本或草稿纸上,这样也是为了理清一下思路。等感觉到自己基本上能够实现程序功能了,再开始敲代码。不管写代码的过程中遇到什么困难,都不要退缩,也不要随便地请教别人或上网搜索。当你看到自己编写出来的程序能够成功运行并产生正确的结果的时候,自信心就建立起来了。         (4)    上完课之后,你也还要继续学习,不要认为课上完了,自己也就完事了。你看到成绩好的同学,其实在课堂上都和大家差不多,但差别就在课堂之外。那么,在课外如何学习《数据结构》呢?其实,只需要有一本教材就足够了。你们那本教材的后面肯定会有很多的习题,我的建议就是你把每一章后面的习题认认真真地做出来,将每一段代码都仔仔细细地敲到电脑里面,力争每一个程序都能实现题目要求的功能。在遇到基本的语法问题的时候,你可以回头翻一下C语言的教材。这是一个很艰难的、枯燥的学习过程,但为了把这门课学好,你也没有捷径可走,唯一的办法就是多实践、多动手写程序。         (5)    在学习的过程中,你解决了任何问题,有任何的心得体会,都可以写成文章发表到博客上(CSDN博客就是一个不错的选择)。这不仅可以锻炼你的写作能力和表达能力,还可以让网络这个最大的老师来指导你的学习。有网上的高手的指点,相信你的进步会很快的。此外,写博客也是一个交到良师益友的好方法。         我的以上建议,请参考。请关注本人博客,我会将答读者问的所有文章都发表到博客上。之前的相关答疑文章请见:         [http://blog.csdn.net/zhouzxi/article/category/2252401](http://blog.csdn.net/zhouzxi/article/category/2252401)         另外,本人的个人独立博客也请多多关注:[http://www.zhouzhaoxiong.com/](http://www.zhouzhaoxiong.com/)     周兆熊 2014年11月4日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(23)

最后更新于:2022-04-01 06:35:13

##一个研三学生有关工作之前的学习的疑问及答复 最近,我收到一位研三学生的邮件,内容如下:         周兆熊学长:         你好,之所以称呼你为学长,是因为我也是南邮的,通院的,今年研三,本科和硕士学的都是通信。从3月份就开始追随你的《让你提前认识软件开发》系列,在新浪微博上也和你交流过,我就是那个觉得你每篇文章内容写的有点少,建议你多写一些内容的学弟。如果你记性好的话应该还记得我,嘿嘿。系列里的每一篇我都认认真真地拜读过,并且文章里的很多代码我也都在自己的电脑上敲过。我被你的严谨的态度、优雅的代码风格和知识共享精神深深地折服。         给你写这封邮件,是因为我刚签完工作,突然变得无聊了,想看几本专业书,巩固一下基础知识,以便以后工作更加顺利,但是我又不知道该看什么书,所以请学长指教一下。下面我说一下我的具体情况:         我签的是中兴西安研究所,软件开发岗(很荣幸可以和学长同司,嘿嘿)。签约的时候并没有定部门,只了解到西安那边做无线的,至于去了到底做什么方向的软件开发就不得而知了。大二的时候开始学习单片机和C语言,做过一个小项目,主要是单片机以编程,C代码量很少,1500行左右。研究生期间做的是图像处理方向的算法实现,主要也是用的C语言,代码量3000行。精度过《C和指针》、《C专家编程》、《C陷阱与缺陷》、《数据结构》,粗读了《操作系统》前几章,还有就是前段时间找工作看了几遍《程序员笔试面试宝典》,平时还看一些博客。自己感觉C用的比较熟,C++这种面向对象的语言从来没有用过,只是了解多态机制,总觉得里面东西太多,很复杂很乱,可能用C时间长了,一时无法从面向过程过渡到面向对象。自我感觉我比其他同学动手能力更强一些,这一点可以从大学实验课和焊收音机的事体现出来。并且对未来我也充满信心,干劲十足。          上面就是我的基本情况,针对我该看什么书这个问题,还请学长在百忙之中抽出时间来指教一下。          最后,祝学长工作顺利,天天开心!           我的答复如下:          学弟,你好!          非常感谢你的来信,首先祝贺你这么早就签了工作了,也非常荣幸在未来和你是同事。你在邮件里面说了我的诸多好处,非常感谢。只要大家能够从我的文章中受益,我写博客的目的就达到了。          一般说来,找工作的历程还是比较的艰辛,而一旦找到工作之后,就会觉得松了一口气,这个时候就会出现你邮件里面说的“突然变得无聊了”。          既然你签的是我现在所在的公司,那么我就要给你说一下我司应届毕业生工作岗位分配的情况。一般说来,我校研究生是四月份毕业,而在二三月份的时候,公司就会在招聘网站上公布每个毕业生具体的岗位情况,包括所属的产品体系、部门及岗位从事的业务。到时你可以到之前填写简历的地方去看一下,信息就是在那里发布的。          我说了这么多,就是为了说明一点,只有在岗位分配之后,你才知道自己到底做什么方向的软件开发,才知道自己是用C语言编程,还是用C++编程,抑或是从事数据库开发。          那么是不是说这段时间就无所事事了呢?显然不是。我建议你做以下几方面的事情:          首先,再强化一下自己的专业基础。你本科和硕士学的都是通信,那么计算机相关的知识就会有所欠缺。因此,这段时间,你要“补一下”这方面的东西。为了有所针对性,你一定要学这两门课:操作系统和计算机组成原理。这方面的知识是通用的,不管从事哪方面的软件开发,都是需要的。         其次,提高自己的写作水平和表达能力。在学校的时候,我们对写作不大关注,但到了单位之后,写作能力真的是非常的重要。你要把自己的思路表达清楚,要让人能够很快明白,就需要你具备极强的写作能力。另外,用语言表达自己想法的能力也是很重要的,因为一个团队中各个成员的想法各异,只有大家沟通顺畅,才能让整体的效能达到最佳。         再次,养成好的习惯,积极参加体育锻炼。在学校里面,大家晚睡晚起是很正常的,但到了单位之后,你要服从单位的约束,上下班都有明确的规定,再也不能像在学校的时候那么自由了。此外,“身体是革命的本钱”,一个人能力再强,如果身体不好,也是不行的。现在离你正式上班还有一段时间,你要改变在学校养成的“劣习”(如果有的话),并把身体锻炼好,以饱满的精神面貌迎接未来的新生活。          你在邮件里面说自己学了很多的东西,但到了单位之后,几乎都要归零,因此你一定要作好从头开始的准备,          以上是个人的一些建议,请你参考。希望你珍惜在校的最后的学习时光,为自己的学习生涯画上一个圆满的句号。再次感谢你的来信,请继续关注本人博客。       周兆熊 2014年11月2日   (本人微博:[http://weibo.com/zhouzxi?topnav=1&wvr=5](http://weibo.com/zhouzxi?topnav=1&wvr=5),微信号:245924426,欢迎关注!)
';

答读者问(22)

最后更新于:2022-04-01 06:35:10

##一个在校学生有关持续学习的疑问及答复 最近,我在博客上收到一条私信,内容如下:          周老师,您好,最近在无意间接触java,很感兴趣,自己也在网上找了一些学习java的视频,作为一个零基础的学生,我在学习的过程中,遇到了很多问题,我十分享受解决问题的快感。         不过我现在接触的都是很简单的问题,我也十分想在在方面走下去。希望你能给我指一条路,让我在学习java的路途中少走弯路。         在学校中我是一个各个方面很差的人,好不容易找到一个让我感到有成就感的事。谢谢您的阅读。         我的答复如下:          你好!          感谢你的来信,首先要恭喜你找到了自己感兴趣的东西。          我认为,要想把一门知识学好,需要具备以下条件:          第一,  自己要对这门知识真正感兴趣。          第二,  要有良好的学习方法和工具(如参考书籍、编程软件等)。          第三,  要有来自外界的激励,如别人的表扬和认可等。          根据你的情况,我认为你可以这样做:          第一,在网上去买一两本好的有关java的学习教材,把书中的内容完全学懂。如果书后有习题,你也尽量把每一道题都做出来。你一定要把代码敲到电脑里面去运行,不要看懂了就算完事了。只有亲自做,才能够真正地搞明白。至于教材的选择,你可以到豆瓣网上去查找java书籍,看一下评价。如果大家的评价都比较高,且适合初学者学习,那么你就可以买来看。          第二,在学习过程中,遇到了什么问题,并通过什么方法将之解决了,这些都是学习的心得。建议你将学习的心得体会写成文章,发到博客上(CSDN博客是一个不错的选择)。别人对你的文章的评价就是来自外界的激励,它会激励着你不断地学习和进步。当看到自己的博客上的文章不断地增加的时候,自信心就会逐渐地建立起来了。          第三,当你把基础知识都掌握牢靠之后,你就可以到国内的一些知名的开源网站(这里有一份比较有名的开源程序的列表,供你参考:https://bitnami.com/stacks)上去找一些比较适合初学者的java相关的项目来做,看自己学到的东西到底有哪些用处。通过参加开源项目,你不但可以提高自己的编程和学习能力,还能够发现自己知识结构的欠缺,并能够通过完成项目来树立自信心,真是“一举多得”。          当然,学习是一个循序渐进的过程,要一定要一步一个脚印,千万不能急于求成。只有打好了基础,才能考虑后一步的学习计划。          另外,你在私信中说“在学校中我是一个各个方面很差的人”,感觉你可能有点自卑。其实,你大可不必这么想,试问哪位大牛,不是从菜鸟走过来的呢?只要每天都有进步,你就应该感到高兴。          在V众投上有一个类似的问答,你可以参考:[http://www.vzhongtou.com/question/415](http://www.vzhongtou.com/question/415)。          我的以上建议,请参考。希望你在学习java的道路上越走越顺。再次感谢你的来信,请继续关注本人博客。    周兆熊 2014年10月31日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(21)

最后更新于:2022-04-01 06:35:08

##一个研二学生有关论文的相关疑问及答复 最近,我在博客上收到一条私信,内容如下:          您好,我是XX通信专业的一名研究生,现在研二,刚刚开会又被老板骂了,唉,他说我不应该从理论开始再去实践,而是从实践开始再去找理论与之相配,简单点说就是,先分析一篇代码再在上面修改编程,然后再以理论来说明,这样的逻辑对么?          因为我看到你的一篇博客《再见,南邮!别了,南京!》上面有写到看了超过100篇的论文,写出的论文EI检索,SCI,所以我想也多看些论文才能想出创新点吧,于是我就看论文,可是老师又说我应该多想,可是我也不能凭空想啊,唉,郁闷。师兄,你是怎么想出创新点的啊?这个过程是怎样的呀?急切求指教。        我的答复如下:          你好!          我在之前答读者问的文章中也提到过,研究生论文是对自己研究生生涯学习成果的一个检验,大家一定要认真对待,切不可等闲视之。          先不管你们导师说得对不对,我认为对于研究生论文的要求有以下两个层次:          层次一:论文有重大创新或提出了十分新颖的观点。这相当于做出了“前无古人”的开创性的工作。          层次二:论文有创新点或对前人的工作有所改进。这类论文的成果是“站在巨人的肩膀上”。          对于大部分硕士研究生的论文的要求,只需要达到层次二就可以了。但如果你的论文没有任何创新点,那么就是一篇很失败的论文,能否顺利毕业就要问“元芳怎么看”了。          如何写出高质量的论文来呢?只有一种方法,那就是多读高质量的论文,多积累一些创新的观点和算法。创新需要积累,当你积累多了,创新点在某个时候就会如泉水一般涌现出来。在那个时候,写出好的论文也就是水到渠成的事情了。          在此,建议你多阅读好的论文,在阅读的过程中做好笔记(最好是写到一个纸质的笔记本上),并思考如何才能对其中的创新点进行改进。你们导师所说的“先分析一篇代码再在上面修改编程,然后再以理论来说明”的做法是想让你走捷径,我个人认为是不可取的,这样会导致你的观点有局限性,写出来的论文的质量也不高。          我之前的很多文章都提到了研究生论文的写作,请参考:          (1)    《“小论文”杂谈》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/6992525](http://blog.csdn.net/zhouzhaoxiong1227/article/details/6992525)          (2)    《“小论文”杂谈之二:如何选择一篇好文章》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/6992530](http://blog.csdn.net/zhouzhaoxiong1227/article/details/6992530)          (3)    《“小论文”杂谈之三:准备工作》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/6993895](http://blog.csdn.net/zhouzhaoxiong1227/article/details/6993895)          (4)    《“小论文”杂谈之四:教材 VS. 论文》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/6993920](http://blog.csdn.net/zhouzhaoxiong1227/article/details/6993920)          (5)    《写大论文的一些注意事项》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/6885752](http://blog.csdn.net/zhouzhaoxiong1227/article/details/6885752)          (6)    《写大论文的一些注意事项(续):我是如何找到创新点的?》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/6891966](http://blog.csdn.net/zhouzhaoxiong1227/article/details/6891966)          (7)    《你的论文,你做主—研究生毕业论文的写作过程》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/8452644](http://blog.csdn.net/zhouzhaoxiong1227/article/details/8452644)          (8)    《答读者问(2):有关研究生论文及实习等问题》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/24981513](http://blog.csdn.net/zhouzhaoxiong1227/article/details/24981513)          (9)    《答读者问(7):有关实习、毕业论文及软件开发和测试的关系等问题》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/37744145](http://blog.csdn.net/zhouzhaoxiong1227/article/details/37744145)         (10)《答读者问(11):有关研究生论文及研究方向等问题》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/38735389](http://blog.csdn.net/zhouzhaoxiong1227/article/details/38735389)         (11)《答读者问(16):一个研二学生有关论文和学习的相关疑问》:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/39393387](http://blog.csdn.net/zhouzhaoxiong1227/article/details/39393387)           我的以上建议,请参考。感谢你的来信,希望你能够写出高质量的论文,并找到满意的工作。请继续关注本人博客。       周兆熊 2014年10月23日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(20)

最后更新于:2022-04-01 06:35:06

##一个在读研究生有关在校学习的相关疑问 最近,在V众投上有一个“在校学习”相关的问题(http://www.vzhongtou.com/question/688),是一个在读研究生提出来的。        这个问题的具体描述如下:        感觉现在学习好像没有重点,什么都想沾上一点,但都不精,最后没什么成果,感觉自己遇到难题就想放弃,这个该如何解决呢?                我的答复如下:        对于在校学生来说,感到迷茫是很正常的,因为在大学里面,缺少了像高中那样的严格管教,所以很多学生不知道自己如何去独立自主地学习。        从你描述的情况来看,应该不算是很大的问题,只要走过这段岁月就好了。我总结了一下,出现“迷茫”的原因有如下几个:       (1)周围缺乏了良师的教导。很多老师没有给学生传授正确的学习方法,没有让学生对未来有一个合理的预期。       (2)受周围环境的影响。当看到同学做什么事情的时候,自己就在想要不要也去做。此外,看到网上的一些言论之后,自己也容易受到影响。       (3)没有一个合理的学习计划,不知道自己未来要做哪方面的工作。正因为如此,才会学很多方面的东西,但每一样都没有学精。        我认为,解决之道有以下几个:       (1)了解本专业的学生的大致的就业去向,让自己的心里有个底。你可以打听一下,你们上面几级的学生毕业后一般都去了哪些单位。你可以看一下这些单位招人的标准都有哪些,从现在开始就有针对性地进行准备。如此一来,比起那些毫无准备的学生来说,你就是领先了一步。       (2)看到自己的进步,让自己的学习成果有一个展示的地方。学习是受激励驱动的,所谓“步步为营”就是这个道理。当你学了某方面的知识之后,你一定要展示出来,让自己可以看到进步。你可以将学习心得体会发表在博客上,让别人来阅读和评论。如此,这样坚持较长一段时间,你就可以感觉自己学到了不少东西,自信心也就有了。       (3)利用一切机会充实自己的简历。对于在校的研究生来说,做一些有价值的科研项目是一个提升自己价值的好方法。另外,如果有机会,你一定要出去实习,在实践中发现自己所学知识的用处。网上有很多的论坛和学习平台,如果合理利用,是能够对你有所帮助的。            我的以上建议,请参考。希望你顺利度过这段“迷茫”期,找到满意的工作。请关注本人博客,我会分享一些个人的学习和工作心得。              (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(19)

最后更新于:2022-04-01 06:35:03

##一个大四学生有关找工作的相关疑问 最近,我收到一位大四学生的邮件,内容如下:       我是一名大四学生,最近一直在找工作,可是没有着落。笔试的时候好多记不清了,面试问题又答不上来,自己觉得学得还可以啊,反正有点烦。我的专业是软件工程,希望你能给我指点一下,谢谢!         我的答复如下:       你好!       首先,非常感谢你的来信。自从本博客专栏开通以来,已经有很多学生朋友通过博客、微信、微博和邮件等方式与本人交流。我一直认为,互联网是一座桥梁,将互不认识的个体联系在了一起。只要善于利用这个工具,人人都可以从中受益。       你的邮件的内容很少,主要涉及到找工作相关的问题。       (1) “凡事预则立,不预则废”,根据我个人的经验,除开专业知识之外,你在找工作之前需要做如下准备:        1) 准备好一份或几份个人简历,最好是中英文的都有。至于如何书写简历,网上的模板有很多,你可以参考。        2) 准备好一套正装。如果你在面试和笔试的时候穿着不好,会给考官留下不好的印象。        3) 在校的各种获奖证书或相关证书的复印件。这是证明自己实力的东西。        4) 一些面试和笔试的技巧或注意事项。这些可以通过阅读一些书籍或在网上获得。       你可以对照看一下,在面试或笔试之前,你是否已经做好了准备?       (2) 对于计算机相关专业(包括软件工程)的学生来说,在学校里面学的课程太多,而每一门学得都不是很深入,很多知识点都是似是而非的,因此才会出现你说的“笔试的时候好多记不清了,面试问题又答不上来,自己觉得学得还可以啊”。你所谓的“学得还可以”是指考试的时候得了高分,但并不代表你把那些知识点掌握了。那么如何提高自己笔试和面试的成绩呢?你可以这样做:       1) 找到心仪公司的往年的面试和笔试题(这个可以在网上搜索),仔细研究一下,看主要考查的是哪些方面的知识。针对这些知识,你进行重点复习。对于一些反复出现的题型,你一定要将原理彻底弄明白,在需要写程序的时候 一定要亲自动手写。通过这样的重点突破,相信你在面试或笔试的时候一定会感觉好一点。       2) 我们在找工作之前,几乎人手一本《程序员面试宝典》,建议你也可以买一本来仔细阅读。上面的题目几乎都是各大公司校园招聘的题目,很具有参考价值。针对书上的内容,根据自身的情况,你可以选择你比较薄弱的环节来进行重点的阅读。在阅读的同时,你一定要动手写程序或算法,不要看完了就了事了。只有亲自动手编写程序,你才能够发现自身的不足。      3) 在面试或笔试之前,你一定要休息好,让自己精神抖擞地出现在考场或面试官的面前。在笔试的时候,不要纠结于某一个题目,对于自己不会的题目,先跳过,最后有时间再回过头来解决。在面试的时候,对于自己会的问题,要全面细致地回答,而对于自己不会的题目,也不要东扯西扯,就把自己所知道的说出来就行了,其它的就说“不知道”就可以了。不管怎样,你一定要表现出自信的一面,让面试官觉得你至少是有培养价值的。      当然,计划赶不上变化,找工作在很大程序度上是运气决定的。但事先的准备可以大大提高被录用的几率。        以上是个人的一些建议,请你参考。希望你找到满意的工作,顺利毕业。再次感谢你的来信,请继续关注本人博客。       周兆熊 2014年10月13日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(18)

最后更新于:2022-04-01 06:35:01

##一个大四学生有关专业发展的相关疑问 最近,我收到一位大四学生的邮件,内容如下:       我是大四物联网专业的学生(兼修工商管理双学位),在学校主要学习的是嵌入式这方面的内容,我在csdn论坛里看到就是关于嵌入式行业发展里说这个行业已经有点夕阳行业的状态了,我也想从事it这一行,现在的问题是,算是稍微有点基础,但是不知道往那个方向走(心里是想走一个比较有前途的行业或者说朝阳行业),我想问一下java+安卓和嵌入式那个的前景好一些,我自己现在是熟悉c的编程,50行的代码没问题。就到这一步。另外就是我自己是比较想偏软件那方面的,但是感觉嵌入式的工作多是硬件那方面的。          我的答复如下:        你好!        非常感谢你的来信,同时感谢你对我的信任和对我的博客的关注。一般说来,到了大四,很多的学生都会感到比较的迷茫,不知道自己未来要向哪个方向走。这种迷茫,或者是迷惑,是很正常的。你一定要坚持下来,走过这段“艰苦”的岁月。        从你的邮件中,我发现了这几个问题:1) 你内心可能比较慌乱,写出的邮件条理不是很清楚;2) 你比较容易受周边或网上的言论的影响;3) 你的自信心也不是很强。我只是从邮件中看出来的,如果有不当之处,请见谅。       下面来具体回答你提出的问题。       (1) 有关行业前景的问题。       你在邮件中问我“java+安卓和嵌入式哪个的前景好一些”,我无法给出准确的回答,因为我本人没有在这两个行业中待过。根据我个人的工作经验,对于软件行业来说,只要把一样东西做精了,都是有前途(或者是“钱途”)的。即使一个方向很热,而你做出的东西是“山寨”别人的,或者是毫无亮点,那么也不会有多少用户会使用。       因此,既然你目前在学校主要学习的是嵌入式这方面的内容,那么你就应该继续学下去,把这个专业的基础打牢,并注意加强自身的编程能力的培养。样样都懂,不如精通一样,只要你真正把你的专业学好了,相信找到一个好工作并不难。在这里,也建议你不要相信网上的什么“夕阳行业”这一说。         (2) 有关做软件还是做硬件的问题。       这个问题,我也无法给出准确的答复,要看你的兴趣爱好、专业能力,更要看你能够找到哪方面的工作。你的当务之急不是考虑到底以后要做软件还是硬件,而是先让自己“强大”起来,把本专业的知识学好,争取拿出一份有闪光点的简历。         我的以上建议,请参考。希望你把握好剩下的在校学习时光,努力学习。祝你找到满意的工作,请继续关注本人博客。       周兆熊 2014年10月9日   (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(17)

最后更新于:2022-04-01 06:34:59

##一个在读女硕士有关实习及如何进入企业的相关疑问 最近,我收到一位研究生的邮件,内容如下:        学长你好!        我是一名现在在XXX读XXX的学生,我本科在国内一所211工科院校读通信工程专业。 在你博客中答读者问的栏目,有些对我很有启发,比如16号的女生如何进入IT行业一文,你指出了女士从事IT行业的一些方向。 现在我也有些疑惑,非常期待听听你的看法和建议。        因为本科读通信工程专业,接触一些通信方面的理论。        微积分、数学物理方法等理论方面学得很好,电磁场理论、电路分析、信号与系统、模电数电等专业基础课也有很好的基础。 但是,我自己觉得自身的实践经历不够,做课程设计等实验动手能力一般,编程能力也很弱(C语言,Matlab,C++等只是皮毛)。 综合来说,是软件硬件方面都很弱,不能把理论运用到实践。      目前读的一年授课式硕士,也是一些理论课,是本科阶段理论的补充,我觉得下功夫考试也能通过。 现在,我看有些好的公司秋季招聘如火如荼地进行,比如ZTE等。而我想积累实习经历。       所以一是想向学长你打听一下贵公司对实习生的要求,特别是深圳总部方面。 还有,根据我的学习经历和自身特点,加上是女生,你推荐我如果申请ZTE实习,申请哪些岗位。        此外,对于向我这样的知识体系,怎么调整才能更好进入社会、进入企业呢?        非常期待你的答复,祝你工作生活一切开心~          我的答复如下:        你好!        非常感谢你的来信,同时感谢你对我的博客的关注。很多读者朋友给我发邮件咨询问题,而我只是根据自身的经验来答复。因此,我的很多意见只供参考,你一定要根据自身的实际情况来进行合理的取舍。        从你的邮件中,可以看出你是一位很优秀的学生,专业课程都学得比较的好,这样就为未来的工作打下了一个坚实的基础。你说自己“不能把理论运用到实践”,这其实是绝大多数学生的情况,因此,你完全不必认为这是你的劣势。大多数学生踏上工作岗位的时候,都是站在同一起跑线上的,关键是看你是否善于学习、是否能够将在学校所学的理论知识应用到实践中。        下面来具体回答你提出的问题。         (1) 有关软件研发相关的实习生的要求,一般是这样的:          1) 熟悉或精通至少一门编程语言。          2) 有良好的计算机或通信专业基础(也就是专业课程学得比较好,通俗地讲就是考分比较高,包括英语课程)。          3) 具备较强的学习能力和沟通能力,善于与别人打交道。        你可以对照以上标准,看一下自己是否满足。        至于你适合什么岗位,这个取决于你自己的性格、爱好和能力。你可以问一下自己:          1) 我喜欢整天与电脑打交道吗?          2) 我喜欢每天都编写代码吗?          3) 经常加班加点地干活,我能够接受吗?          4) 我是一个事业型的人吗?          5) 我喜欢钻研各种技术问题吗?          6) 程序经常出问题,我能够受得了打击吗?          7) 我具备足够的抗压能力吗?          8) 我经常关注科技发展,并不断地在学习新知识吗?         如果以上问题,你大部分都给出的是肯定的回答,那么你可以申请软件开发和测试相关的岗位。这些岗位也会细分成很多块,如果你C/C++学得比较好,你就可以申请C/C++相关的实习岗位;如果你JAVA学得比较好,你就可以申请JAVA相关的实习岗位。         如果你想申请我们公司的实习岗位,你可以到我们公司的官网上面去看一下相关的招聘信息。           (2) 关于你如何进入社会、进入企业的问题,我的建议是这样的:         1) 继续把专业基础课程学好,多拿奖学金,让自己的简历光鲜一点。         2) 如果你想做技术相关的工作,那么你要至少熟悉或精通一门编程语言(我多次强调这个,因为这确实很重要)。         3) 多关注科技发展,了解最新的科技动态,做一个与时俱进的人。         4) 对于自己感兴趣的问题,尽量做到有一定深入的研究,最好能够提出自己的看法并做出验证。这样当你去面试的时候,就可以做到侃侃而谈,提高自己被录用的概率。          我的以上建议,请参考。你是一个对自己的发展很关心的学生,相信你能够找到适合自己的工作岗位。祝你学业、事业有成,请继续关注本人博客。       周兆熊 2014年9月22日   (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(16)

最后更新于:2022-04-01 06:34:57

##一个研二学生有关论文和学习的相关疑问 最近我收到一位研二学生朋友的邮件,内容如下:         您好,请允许我称呼你为师兄,我一直关注您的CSDN博客;我是某工科大学研2学生,后年毕业,本科和读研都是计算机专业;我有几个问题请教一下:        (1)关于论文:我论文点已经找到,表面上英语直译的内容意思还能懂,但是看懂论文的思想非常吃力,前面的综述还好,后面的数学公式,还有一些算法,仿真比较,看的我云里雾里的,非常不清楚;请问师兄有什么好的办法来解决这样的困扰;        (2)关于论文:小论文或者大论文,如果真正的都是自己写的,但是可能国外某论文和你的观点一样,但是我们本身没有看到这篇论文,这算不算学术抄袭;       (3)关于技术理论:有两本实在啃不动了,一个是TCP/IP详解,里面的个中协议仿真分析,看的很是头疼,现在公司一般都要知道TCP/IP原理,他们的要求到底是什么程度,是对协议的原理大体把握吗,比如三次握手的原理;还有一个是编译原理(龙书),看起来很吃力,感觉跟数学结合的很紧,不像操作系统的原理,很实在;请问我是继续前进,还是工作的时候用到了,再看呢;       (4)关于找工作:请问现在一般好的公司,是看重毕业生的潜力和视野,请问这种潜力和视野具体是指什么,现在在校,具体怎么做才可以提高;       (5)关于实验室项目:我自认为实验室项目比较水,研二实习也是不可能了(因为想把论文弄好了,这样可以安心找工作);请问公司应聘的时候,没有好的项目,会不会处于不利地位,应该通过什么其他方式来弥补;         谢谢,打扰了,麻烦了,祝您工作一切顺顺利利!                                                                                                                                  我的答复如下:         你好!         感谢你的来信,一般到了研二的时候,很多人都会纠结于论文、实习和找工作之间。你需要做的是平衡好三者之间的关系。         下面,我来回答你的问题。         (1)   既然你确定了自己要研究的点(也就是创新点),那么你需要做的就是将自己的想法实现,写成论文。在阅读他人论文的过程中,遇到了不懂的数学公式、算法和仿真,如果是与自己的这个创新点相关的东西,那么你要静下心来,彻底地把它们弄清楚。写论文的过程确实是非常的枯燥,也没有特别好的生动有趣的办法。建议你将看不懂的论文打印出来,不要在电脑上看。你可以拿笔将论文上的一些公式、算法和仿真记录下来,反复地看,反复地理解。俗话说“读书百遍,其义自见”,这样多次阅读和理解,你才能够最终弄明白。另外,遇到需要编写程序的时候,一定要动手,不要觉得麻烦就跳过了。         (2)   你的观点与别人的观点一样,但实现的方法或途径可能不一样,那就不算是抄袭。据我的经验,两篇论文不可能完全一样的。在想到自己的创新点的之后,你一定要在论文库中搜索一下,看别人是否已经写过类似的东西了,这样才能够避免重复劳动。         (3)   一般公司对TCP/IP原理的要求也不是很高,你只需要知道网络的运行原理、分层模型、系统框架和一些基本的协议就行了。关于编译原理,就我目前的工作来看,几乎不涉及,因为这与计算机内部密切相关。很多东西,你都可以到工作需要的时候再来学习。         (4)   我不知道有什么好的公司看重毕业生的潜力和视野,反而大部分公司是看中学生具备哪些本领、能够干什么事情、工作能否很快上手,毕竟,单位也不想花费太高的培养成本。实际解决问题的能力比所谓的潜力更重要。在校的时候,你一定要把专业的基础打好,至少熟练或精通一门编程语言。         (5)   如果你没有出去实习,也没有做过好的项目,确实会影响你找工作。现在,大多数的企业都想学生具备实习经历,这样才能更快地融入工作环境之中。对于你来说,如果没有好的项目,你可以到网上自己去找。一些开源网站上面的项目还是很不错的。只要你具备了良好的解决问题的能力,专业基础扎实,还是能够找到好工作的。           我的以上意见,请参考。希望你平稳地度过这个“浮躁期”,顺利毕业并找到满意的工作。再次感谢你对我的信任,请继续关注本人博客。       周兆熊 2014年9月19日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(15)

最后更新于:2022-04-01 06:34:54

##一位在校大二学生有关算法和英语学习的疑问 一位在校的大二学生朋友给我发邮件,内容如下:         您好,我是名在校的大二学生,我已经很认真地看完您写的文章,心有感触,我有些问题想请教您!         1、从事软件开发对需要具备怎样的编程技能?现在我总觉得算法是比较难,有些算法一点都不理解,感觉在这方面很困难,因为暑假一直想自学算法的,但学了几天,实在是学不下去了。您能给我点建议如何学习算法吗?         2、在软件开发的过程中,算法是自己写的还是网上有源代码???那如果是网上抄代码,还需要理解得多透彻????         3、英语是否要考6级才好就业,英语对计算机行业有什么影响???是否一定要考6级?           我的答复如下:         同学,你好!         读了你的邮件,我还不能了解你现在的基本情况(包括你的专业、学习状况等)。以后给其他人发邮件咨询,请记得先告知自己的基本情况。        下面,我来回答你的问题。         (1)    从事软件开发需要具备怎样的编程技能呢?我总结了一下,需要具备的技能(不仅仅是编程技能)包括:1) 熟悉或精通至少一门编程语言;2) 对计算机的运行原理有一个比较清楚的认识;3) 快速的学习能力及灵活的应变能力。很多人都以为在学校里面要学很多很多东西才行(我在学校的时候也这么认为),但实际却不是。只要你熟练掌握了一门编程语言,其它的很多东西都是需要在实际工作中来学习的。当然,在大学里面,你要尽可能的多了解一些东西,以后在工作中用到时,才能够很快地回忆起来,才能够找到学习的途径。         (2)    对于算法的学习,我建议你不要按照书上的章节来学习,那样非常的枯燥,而且效率也很低下。你可以在算法论坛(如CSDN的算法论坛)上面去找一些有意思的问题,然后看自己能否编写算法来解决。在解决的过程中,你要随时翻看算法教材,加深理解。当一个问题被解决了,你会很有成就感,而且你也在不知不觉中体会到了算法的妙用,达到了课堂教育达不到的效果。         (3)    在软件开发的过程中,算法大部分是自己写的。千万不要认为网上什么东西都有,那些东西很多都是错误的,也是不规范的。         (4)    对于英语的要求,一般说来,本科毕业是要过四级才好找工作,而且很多学校要求学生要过英语四级(至少是校内四级)才能拿到毕业证。当然,你能够过英语六级最好。鉴于中国IT行业基本是山寨美国的多,英语对计算机行业的影响是很大的。很多先进的技术资料都是英语的,因此,你要能够读懂英文资料,这是对一个IT从业人员的基本要求。         另外,我提个小小的建议。由于当前大学本科的计算机教材很多都是落后的,因此,你可以经常访问一些技术博客或论坛实时地获取一些知识,这样对你的学习也是很有好处的。         最后,希望你好好珍惜在校的时光,努力学习。请继续关注本人博客。       周兆熊 2014年9月17日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(14)

最后更新于:2022-04-01 06:34:52

##有关大学女生如何进入IT行业的问题 女生如何在IT行业发展?这是一个很古老的话题了。最近,我收到一位读者朋友的邮件,内容如下:         您好,学长。我是一名2015年将要毕业的三本大学本科生,当初报考学校不知不觉就被调剂到了计算机科学与技术专业,因为憧憬大学的美好,于是背上行囊就踏入了学校的大门。在校期间我很努力的学习自己应学的课程,每年都可以获得国家励志奖学金和校一等奖,在组织活动方面也是当过很多干部,校外兼职也从事过各行各业。当然,我是一名计科生,我的专业是计算机软件开发(c/c++),我也参加过竞赛(未获奖)。其实说实话,我只是很努力,使学校开设的课程能拿到高分,在计算机编程方面我真的很弱,弱到写一个简单的算法题都需要整理半天逻辑。         要毕业了,很迷茫,有想过考研,但是逃避也不是一条永远的路。现在考研进度也放下了,工作也不知道该怎么找。希望您能指导我,女生(或者说编程能力弱的人)适合做计算机行业的什么岗位?大型互联网/服务商的组织架构中都有哪些部门?        最后,我还要向您表达诚挚的谢意,希望尽快收到您的回信,谢谢。           我的答复如下:         你好,感谢你对我的信任。从你的邮件可以看出,你学习非常的努力,不仅学习成绩好,而且在社团活动和社会兼职方面也非常的活跃。你在大学的生活肯定是丰富多彩的。         在回答你的问题之前,我想介绍一下我所在的开发部和我所知道的测试部的情况。我们开发部一共有将近80人,而女员工的人数不足10人。我们两个开发组加起来有14人,只有一位女同事。而测试部的情况有点不一样,我不知道他们部门共有多少人,但男女应该差不多各占一半。因为开发人员要对自己的程序进行自测,所以我经常与测试人员打交道,知道那边的一些情况。         通过我上面的介绍,你应该大致了解了开发人员和测试人员的人员结构。下面我来回答你邮件中提出来的问题。         (1) 女生适合做计算机行业的岗位很多,像我上面提到的软件测试,就需要很细心的人来做,在这方面女生显然比较适合。此外,一些文档编写、运行维护相关的工作也是可以考虑的。当然,这个要从你自己的兴趣爱好和特长出来。另外,编程能力弱是一个相对的概念,你还在学校,并不是说你考试得了高分编程能力就强,也不是说你写出一个程序很费力编程能力就弱。只有在实际的项目工作中,你才能够逐渐发现自己是否适合当前的岗位。因此,你不必太纠结于自己的编程能力。         (2) 大型互联网/服务商的组织架构中都有哪些部门我不得而知,但从我所在的公司来看,有开发部、测试部、市场部、系统规划部、财务部、人力资源部、组织文化部、战略部等。计算机相关专业的应届生一般进入的是开发部、测试部和市场部。         (3) 有关考研还是工作的问题,你一定要考虑好,多问问你的家长、朋友和老师,因为这是一个很重要的人生选择,希望你不要随大流,要有自己的想法。        最后,希望我上面的回答能够对你有所帮助,也希望你能够找到适合自己的正确的发展道路。请继续关注本人博客。       周兆熊 2014年9月16日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(13)

最后更新于:2022-04-01 06:34:50

##有关应届生求职面试资料和职业规划等问题 最近,有读者给我发邮件,希望我提供一些应届生求职面试的资料,也有读者向我咨询有关职业规划的问题。我在此统一回复。         1\. 有关应届生求职面试的资料         我在找工作之前,整理了一些资料。现将所有文档打包,上传到了百度云上面,有需要的可以下载来参考,但请勿随意在网上传播。         资料链接请见:[http://pan.baidu.com/s/1kTsoSKZ](http://pan.baidu.com/s/1kTsoSKZ)                其中包含了8个文档:         1) 《开放性问题回答示例.doc》         2) 《面试问答(英文版).doc》         3) 《面试问答(中文版).doc》         4) 《求职信.doc》         5) 《网申.doc》         6) 《小组讨论.doc》         7) 《行为事件访谈型面试问题回答示例.doc》         8) 《中英文自我介绍.doc》         **  2\. 有关职业规划的问题**         这是一个比较大而高深的问题了,我也还在探索之中。推荐大家阅读李智勇老师的《程序员生存定律》系列文章。         该系列文章的链接为:[http://blog.csdn.net/leezy_2000/article/details/29407747](http://blog.csdn.net/leezy_2000/article/details/29407747)           感谢大家对我的博客的支持,请继续关注。         (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(12)

最后更新于:2022-04-01 06:34:47

##有关考研的问题 最近我收到一位本科生朋友的邮件,内容如下:         学长:         你好!         我是XXX大学的一名大三女生,本科阶段学的是电子信息工程,成绩专业15-20%。打算考南邮的通信学硕。南邮虽然不是“985"、“211”,但是通信专业就业好像还不错。想问:         1.学长,你觉得依我的水平以及南邮每年的报考录取情况的话我考这个学校成功率大不大?或者推荐一下其他学校也行。         2.在政治,数学,专业课,英语中比较担心数学,感觉自己学习数学的思维不大灵活,希望能考120左右吧。就数学这一门,学长有没有什么意见或者建议呢?         暂时就这些吧,先考上再说。                                                                                                                         学妹           我的答复如下:          学妹:          你好!          感谢你的来信,感觉你是一个比较关心自己学习的人,已经在准备自己考研的事情了。要提醒你一下,考研不是小事,要经过自己的慎重考虑,不能跟风,不能看到别人都考研了自己也跟着去考。          首先,我要说一下南邮的概况。如你所说,南邮不是“985"或“211”高校,但她的毕业生就业率一直都很高,研究生(不管什么专业)的就业率基本保持在100%。我们当时一个班上有40人,据我了解都找到工作了,有些还去了国内顶尖的互联网公司(像百度、阿里巴巴、小米等)。因此,如果你想毕业后找一个好工作,并且自身条件达到的话,报考南邮的研究生是一个不错的选择。         下面来回答你的问题:          (1) 研究生考不考得上,与平时的专业成绩的好坏关系不是很大。因为平时的期末考试,很多老师放水,把大部分考试题目都给学生说了,只要记忆力好,最后几周复习比较用功,一般都是能够考好的。而考研不一样,需要有一定的专业积淀才行。因此,只要你的专业基础知识比较扎实,考研复习得比较充分,是能够考上的。现在,你不应该关心自己考得上不,而应该集中精力去复习备考。当然,我也不会给你推荐哪所学校好,这个需要你自己去寻找自己满意的学校。          (2) 对于数学这一门的复习,我也提不出什么创造性的建议。但有一点,要想学好数学,需要多做题、多总结才行。你要遵循“做题-->总结-->再做题-->再总结”的步骤,不断地去寻找学数学的“感觉”。我说得有点抽象了哈,你自己去领悟吧。有关如何学好数学,可以参考我以前写的博文:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/6888866](http://blog.csdn.net/zhouzhaoxiong1227/article/details/6888866)。         考研是对体力、脑力的综合性挑战,也是考验你能否坚持地做一件事情的最好方法,希望你能够为自己交上一张满意的答卷。           我的以上意见,请参考。再次感谢你对我的信任,请继续关注本人博客。       周兆熊 2014年8月28日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';

答读者问(11)

最后更新于:2022-04-01 06:34:45

##有关研究生论文及研究方向等问题 最近,收到一位准研究生朋友的邮件,邮件内容如下:        学长:        您好!        我是一名即将研一的学生。您的博客我很早就已经关注了,也分享给我的同学。这段假期时间,看了学长您的很多博文,能够感受到学长在学校期间以及现在在工作取得了很好的成绩,同时学长也非常热心帮助我们这些学弟学妹们。每次读完满满的都是正能量,虽然没见过学长,但您是我学习的榜样。因为我读的是大专,然后考了本科,现在考上研究生。我非常珍惜自己的学习机会。即将读研,我有下面几个问题请教学长您,希望得到您的帮助:         1. 从博客中知道学长研一已经在顶级期刊发表了论文,我想请教学长在研一的时候时间是怎么分配的,学习计划是怎么的制定,能够有您这么好的成果?         2. 学长您当时看了哪些期刊论文呢,哪些比较好,有什么推荐吗?         3. 读研的时候,还要跟着导师一起做东西,有时候做的方面和自己研究的方向可能有不同,怎么取舍比较好呢?        我的答复如下:        学弟:         你好!         感谢你对我的信任,感谢你对我的博客的长期关注,也感谢你将我的博客分享给你的同学。从邮件中,可以看出你是一个很有上进心的人,不断的在提高和完善自己。         作为过来人,我只是表达一下自己的看法,希望你能够选择性地参考。我对你提出的几个问题的回复如下:         1. 有关研一时间的分配和学习计划的制定。         先更正一点,我不是研一发表论文的,我是在研二的下学期才发表论文的,不过在研一的时候的确看了很多论文。         研一的时候,我们上了一年的课,因此我都是在课余时间来看论文的。我一般是这样做的:在完成了课程作业之后,我就会看一篇下载的论文,并做好笔记(写到了纸质笔记本之上,这个笔记本现在都还在)。不管有什么事情,我会要求自己每周都一定要看几篇论文,这样长期坚持下去,就会积累很多东西。        总的说来,我建议你按照学校制定的培养计划来学习。在学好了相关课程之后,可以看一些好的论文,发现自己感兴趣的研究方向。       有关我研一的学习生活,请看我的博文:[http://blog.csdn.net/zhouzhaoxiong1227/article/details/7321615](http://blog.csdn.net/zhouzhaoxiong1227/article/details/7321615)。           2. 有关期刊论文。         对于研一的学生来说,要多看一些经典的综述性的文章,以对行业或研究方向有一个大致的了解。不要看学术性或理论性太强、涉及到很高深的数学知识的论文,那样既花费了精力和时间,又没有学好。         我推荐你到你们学校的图书馆里面去下载中国的A类期刊的论文,即《计算机学报》、《软件学报》、《通信学报》、《电子学报》、《电子与信息学报》等期刊上面的论文都值得一看(特别是综述性的文章)。英文论文的话,我推荐你阅读IEEE和ACM相关会议或期刊的论文。         另外,要多看一些近三年发表的论文,这才是当前人们正在研究的东西。        3. 有关研究的方向        首先,这个要看你们导师是如何对待论文和研究方向的。他是给你们指定论文的题目和研究方向,还是让你们自己去选择自己感兴趣的研究方向?对于前者,可能会出现做的方面和自己研究的方向有不同的情况。        如果出现了不一致的情况,你就要平衡好两方面的时间,导师布置的任务一定要完成,因为这涉及到自己能否顺利毕业。在做完该做的事情之后,你可以做你感兴趣的研究。具体如何取舍,要根据实际的情况来决定。我说的只是个人的看法。        我提一个建议,如果出现了做的方面和自己研究的方向不一致的情况,你可以考虑怎么将两个方向结合起来,即把导师要求做的东西融合到你的研究的方向上去。“兴趣是最好的老师”,只有兴趣驱动,你才能够做出好的成果来。          以上是我的一点想法,请参考。研究生的时间是很短暂的,希望你好好珍惜在校的每一天,学到过硬的本领,顺利毕业并找到满意的工作。感谢你的来信,请继续关注本人博客。     周兆熊 2014年8月21日 (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
';