网站总结
上周增加了日周月排行的功能,希望大家在网站上多活跃,有好的代码分享上来。
最近google广告点击率非常低,也请大家在浏览最代码的时候关闭屏蔽广告的插件,时不时帮忙点击下广告以帮助我更有动力去完善最代码,给大家提供更多更好的服务,分享更多技术的思想,感谢大家一直以来的支持和关注。
资讯精选
1.从未在纸上或白板上写过代码
这是求职者最容易犯的大错之一。绝大多数编程面试都会安排在纸上或白板上。而与电脑上大量的编码练习相比,绝大多数求职者极少在纸上或白板上进行编码练习。
用 惯了IDE(或是文本编辑器)的求职者会在如何保持纸间良好代码规范这第一步上磕磕碰碰。众所周知,编码规范是编程面试的必要条件。而且,在纸上 写代码的时候,没有编译器帮你指出明显的编译时错误。此外,在专家组前方的白板上编码时,绝大多数求职者会感到不安。所以面试前,做些纸上或白板上的编码 练习吧。
2.不要硬记代码
很多毕业新生会去背一些常见问题的答案。好比很多程序员都知道如何“用C中的位运算来交换两数”。但并不是所有人都知道那段代码真正做了些什么,又是如何完成这项任务的。
死记硬背并不是C编程面试的捷径。即便你侥幸答对了一两题,如果不了解基础概念还是无法通过整个面试。关键要了解编程背后的概念。重点并不在于你知道多少种语言,而在于你有多了解这些语言。
3.与面试官极少交流
觉得题目有问题或是有其他疑问时,最好和面试官谈谈。
即便不知道某个特定问题的答案,比起静静坐着或是谈些与该问题全然无关之物,诚实地承认不知道会更好。你还可以讲讲其他与原来问题相关的话题,并告诉他们你在这个话题上很擅长。
4.不准备电话面试
近来很多公司在让求职者参与下一轮面试前会安排电话面试以便初步评定。电话面试与面对面面试有很大不同。电话面试要求良好的听说技巧。
保证在回答前认真听问什么。面试官也许会给你一段代码并让你基于这段代码回答一些问题。参加电话面试前手里有只笔,有张纸很重要。
还有,不要用精准的书面用语回答所有问题,因为那样的话,面试官也许会觉得你答题时一直在完全搬照网上资料。
5.代码凌乱
不要低估代码规范的重要性。不管你多博闻强识,多有创造力,记得他们是在为你的编程技巧评定。面试官下任何结论前都要先读懂你的代码,如果你代码很凌乱,面试官也许压根就不想看。
面试官只是一方面,规范编码还有助于求职者写出正确的程序。相比一团糟的代码,规范编码出bug的可能性更小。
6.对思路避而不谈
面试官会对你解决问题的方法很感兴趣。他们不期望你能解决所有提出的问题,但希望你能给出正确的思路。
例如,你正写一个用C指针交换两数的程序,正确的思路(即调用含待交换变量地址的函数并获取指针参数地址)才是真正重要的。面试官应该会在其他卡壳的地方提示你。
所以,答题时大声说出你的思路把。这是让面试官参与其中的好方法。
7.不好的函数、变量命名习惯
无论面试时用哪种语言解决问题,尽量用相关的变量和函数名,这会有助于代码维护。
举个例子,假设你随手为函数和变量命名,写了成千上万行代码。现在,新人要加入并调试这段代码。可调试这种甚至无法理解变量代表什么的代码,纯粹是做梦。
面试官可能认为这是一个缺点,也可能不这样认为,但站在安全的一方总是更稳妥。此外,编写交换两个变量的函数时,明明可以取名为‘swap’非用‘func’做名字的行为是不会被赏识的。
8.简历中有你所不知道的技术
这是新手的另一大错。为了让简历入围,求职者会列很多编程语言以及很多不甚了解的技术名词。虽然这也许能为你赢得面试机遇,但余下的经历肯定不会很愉快。几分钟内,面试官就能了解你的真正水平和技能。
9.没有自信
和任何面试一样,自信在编程面试中也很重要。有时面试官故意让你回答一道错题。这种情况下,如果知识过硬也有信心的话,你可以轻易指出题目中的疏漏并向面试官提。
回答正确却对自己的回答信心不足的话,入选几率不会很高。这是因为没有公司愿意雇佣没有自信的人。
10.压力过大及睡眠不足
面试前不要熬夜准备。面试过程中,你要保证头脑清晰,精力充沛。
很多求职者在答题时头脑一片空白,尤其是站在白板前面对专家组时。面试压力使得这对求职者而言是常事。好好睡一觉,面试前尽量放松。
这个话题也是我在程序开发过程中常常会遇到的困惑,程序到底应该设计成什么样子?
诚然,是个程序员都知道程序设计应该要做到低耦合,高复用,高扩展等等。但是怎么设计才能达到这样的程序以及那个度的把握也常常是很困惑的。在我 的工作中接触了很多Java程序员,大多数的程序员设计风格都大相径庭,这里暂且不说熟好熟劣,先就我遇到的程序员们分个派别,你属于哪一派呢?
纯属调侃玩笑。
1. 拿来主义派。
特点:要解决一个问题,现在网上或者自己过去的程序找到相应的代码,拿过来改改能用,OK,结束。
好处:效率高。
坏处:如果对代码理解不透彻,可能造成维护上的困难。
2. 纯代码派
特点:写代码从来不写注释,坚持我的程序只有我能懂的编码原则。
好处:保密性高,可以很好的搞晕对手。
坏处:也容易搞晕自己和队友。
3. 复制黏贴派
特点:一模一样的代码到处都是,这一派坚信,即使要改,只要有伟大的IDE,全文替换还是很方便的。
好处:增加代码量,从而有利于提高个人职业生涯的代码行数据。
坏处:可能导致不会用IDE全文替换的队友住院。
4. if else派
特点:这一派逻辑思维极强,将Java语言的流程控制发挥到了极致,如果业务允许,一个三元表达式可以写3000行。
好处:在一段代码内把事情搞定,不用整许多类调来调去。
坏处:容易导致{}就占200行,浪费IDE空间。直接导致队友住院。
5. 接口派
特点:任何类都要写个接口,深谙Java多态的思想。
好处:面向接口编程,扩展性极强。
坏处:写接口也有很多技巧性,设计得不恰当也不见得接口多就是好事,反而导致代码很乱。
6. 工具类派
特点:能用工具类就用工具类,不能用工具类努力也要用工具类。
好处:工具类简单直接,便于阅读。
坏处:首先工具类其本身也有一些缺点,其实工具类不符合面向对象编程的思想,程序很难扩展。
7. 设计过度派
特点:将平生所学都要用尽全力用在实现一个功能上,该用上的设计模式都得用上,各种封装,各种接口。
好处:程序设计的好便于扩展,重用。
坏处:过度的设计可能导致程序更难懂,浪费工作效率,有可能根本就没有你想象的那些扩展场景。
8. 其他派
特点:五花八门
好处:百花齐放
坏处:良莠不齐
你是否曾为业余项目没有进展而惆怅过?想要有完整两天时间(没有任何的放松机会)来编程也不现实,时间的零乱往往让人不知所措。还有一个重要的问题就是你上个星期写的代码,隔一个星期后再接着写,你还能记得多少?
为此,可汗学院计算机科学学院院长暨jQuery创始人John Resig撰文分享了自己的心得和体会。现在,让我们看看John Resig是如何做到每天都写代码的,首先他给自己定下了几条规则:
1. 每天必须写代码。可以写文档、博客或者其他的文章,但是必须要加进自己写的代码。
2. 代码必须是有用的。不要格式化、重构的代码。
3. 代码必须在午夜之前写好(为了避免不想熬夜而草率地写代码)。
4. 代码必须是开源的,且要放到Github上(这样强迫自己小心写代码,并会考虑代码重用性及怎么创建项目前期的模块)。
当然,以上这些规则是灵活的。John Resig之所以制定这么严格的规则,是想提高自己业余项目的开发效率。他已经在连续20周的时间里每天写代码,这给他带来了好的工作习惯。鉴于此,John Resig为大家分享了自己坚持每天做业余项目后的心得体会:
利用最小化的时间写好代码。我强迫自己每天花不少于半个小时来写代码(这真不是一件容易的事,尤其还得回忆前一天写了什么),在工作日期间一般不超过一个小时,但在周末我会花多一些时间做业余项目。
让写代码成为习惯。要知道我并不关心自己在Github上的排名,因为我觉得做业余项目是自己的事,不要为了取悦别人而做。减肥和锻炼也是同样的道理,如果你不在乎提升自己,你永远都不会取得成功。
与不良情绪作斗争。在开始实施每天写代码的计划前期,我时常焦虑项目没有很大的进展,毕竟业余项目没有时间限制。后来我意识 到有这样的不良情绪对项目进展一点帮助都没有,反而会阻碍。所以要与不良情绪作斗争,现在我能心平气和地完成大量的工作,再也不会像以前那样为工作的事情 忙得焦头烂额了。
安排、利用好周末时间。对大多数人来说,利用周末时间做业余项目是项目取得大进展的绝好机会。而对于我来 说,如果直到周末业余项目才能做好我会对自己很失望。之前我很少能完成所有自己想做的工作,这也就强迫自己不参加诸如参观博物馆、游公园等自己喜欢的周末 娱乐活动,把时间留给工作。然而现在我强烈地意识到尽管业余项目很重要,但是也不应该忽略个人生活,所以学会安排时间很重要。
潜意识思考。每 天做业余项目写代码有一个有趣的副作用,那就是大脑会在潜意识里思考。因此,当我在散步、淋浴或从事其他非脑力活动时,我还在想着下一步代码该怎么写、出 现问题了有什么解决的好方法,以前我每星期或者隔一个星期写一次代码从没出现过这样的情况。时间用来思考自然就不会再为业余项目取得的进展少而焦虑了。
每天写一点代码不易忘。当接头做业余项目时总要付出“上下文切换”的代价,然而不幸的是思考是很难接上头的。所以我每天都做一点业余项目,让自己不容易忘记。
管理好时间,平衡工作、生活、业余项目。现在的我已简单地学会了如何更好地维持工作、生活、业余项目的平衡,我知道自己每天 都要做业余项目,所以我会更好地管理时间。如果我晚上有活动且很晚才能回家,那么我会在开始工作之前就做好当天的业余项目。假如当天的业余项目没有做完, 那么不论多晚我都会完成,做到今日事今日毕。
要及时跟外界沟通。当自己养成了新的习惯后跟外界沟通这是很有好处的。我的伙伴们都知道我每天写代码这个习惯,因此有活动安排时我会跟他们说:“等我写完代码再去。”他们一点都不会介意也很理解我的行为。
代码积少成多。我很难相信自己在过去的几个月写了很多的代码。我新建了几个网站,重新写了框架并创建了大量节点模块。我已经写了这么多以至于有时我都忘记自己写了些什么,但是我真的很高兴我写了这么多的代码。
好的习惯能带来巨大的成功,像每天写代码做业余项目这件事只要你坚持做下去,一定会有意想不到的效果。
成 都这边14年的软件开发笔试题延续了一贯的传统,还是考查数据结构、操作系统、计算机网络等方面的内容,不过槽点还是很多的,首先就是笔试挨着坐,博主的 左边就是同班同学(我没偷看啊!),考试的时候还有同学讨论题该怎么做(给跪了),然后题目据说照搬了往年的题,这个我不太清楚。从笔试的情况来看,笔试基本是不卡人的,所以大部分同学都收到了初面通知。
一面遇到的面试官比较nice,先介绍自己,然后让介绍做过的项目,基础知识只问了一个inner join和left join的区别,竟然还问了有没有女朋友的问题。
其他同学一面问题呈上:
1、写字符串反转程序;
2、利用宏定义比较两个数较大的值并返回;
3、a=(int)((int*)0 + 4)求a是多少(答案好像是16吧?);
4、写一下归并、插入...等排序程序。
一面虽然比较水,但是卡掉了大部分人,目测通过比例5:1的样子。师弟刚给了包槟榔,虽然吃不惯但还是要感谢一下^_^。
二面的面试官应该是技术总监,还是自我介绍,然后问你的技术比别人强在哪里,后面还是介绍做过的项目,不过期间问的问题多多了。
1、hashtable原理;
2、简述web从前端到后端的处理流程;
3、web攻击有哪些;
4、数据库表比较大时,优化方法有哪些;
5、给一组数值,如何求绝对值相差最小的两个数;
6、你所学过的算法里面,那个时间复杂度最高;
7、如何评价排序、查询算法;
8、web页面压缩技术原理;
9、数据库影响因子(好像是这个名字,没接触过)是什么;
10、正则表达式了解多少,*号和?号的区别;
- 参加用户组:参加本地用户组的一些会议,总是有一些专家出席做相关演讲。
- 参加培训:公司总会为员工的科技技术做一些培训,有兴趣的可以参加提升自己的技能。
- 参加讨论会:参加一些类似于Google IO、Build、JavaWorld、WWDC、SQLPass等等,去接触一下你所使用的产品的真正的创造者。
- 回答问题:个人举得最有效的提升办法就是回答别人的问题,就像QA网站StackOverflow。
- 边吃边学:如果你有吃饭的时间,那你就有学习的时间;如果你有和团队成员编写代码的时间,那你就有开发设计的时间。
- 加入一个开源项目:开源项目是最能锻炼人的一个途径,在这个过程里,你可以思考很多东西,比如说这个代码为什么要这样写?为什么要用这样的方式?使用了多少个设计模板等等。
- 读书,读代码,读博客:可供程序员阅读的书可以说是汗牛充栋,这里就不列举了。阅读代码可以让你见识到更多的框架;可以让你发掘出更多的API。阅读你所关心的专家的博客,可以帮助你学习到更多的代码组合和技巧,同时遇到不解的问题还可以留言提问,何乐而不为呢?
- 通过做Kata来实践:Kata是空手道里的招式,也可以用在编程技术里。可以阅读这篇博文加以理解,Using Code Katas to Improve Programming Skills。
- 发表博客:编写博客也可以让人保持清醒、更有斗志。在发表博客之后,读者会就你的错误提出指正,为了避免这样的情况,在发表之前会通读好多遍,并做一些研究,以防出现问题,这也是技能的一种进步和拓展。
- 写书:在技术领域的大多数人都会写一本书,因为写一本书需要花很多时间去做调查和研究,除了要确保 你的代码是正确的之外,你还要做很多其他的事情,在这之前你可能只是个码农,但是一旦你出版了这本书之后你就是这方面的专家了。当然,写书最糟糕的地方就 是最初的反馈信息里有很多别人指出的错误,如果脸皮不够厚的话可能是一个棘手的问题。
- 听播客,看在线研讨会:从播客和在线研讨会上也能学到很多东西,关键是在自己的电脑上将播客和研讨会力学来的知识进行代码验证是最好的进步环节。
最近发起了最代码的推广活动,希望每个支持zuidaima的都可以帮忙推广下,活动地址:最代码推广活动,有你参与更牛币。
最代码每周都很精彩,有你会更精彩,请访问http://www.zuidaima.com。欢迎转载分享该文章, 欢迎推荐给身边的小伙伴们
欢迎关注最代码的官方微信账号zuidaima,最代码官方新浪微博:http://weibo.com/zuidaima,最代码官方腾讯微博:http://t.qq.com/zuidaima
欢迎转载该文章并提供出处。
淘宝店铺:http://www.zuidaima.com/taobao.htm