这一年,做为应届生的我合格吗?
看了博客园首页 这一年,做为asp.net程序员我合格吗? 这篇文章,觉得有此事话要说,下面我就一一列出我的观点。对事不对人,只是为了和大家一起探讨什么才是程序员必须的技能。
1、div+css2
这个玩意儿,基本上是专业前端干的活,但我们做后台开发的。于学习之初多多少少都顺带学习了些,后台程序员不见得要将这门技能掌握得多好,能看能写就行。但是,如果知道更多就会更好,基本的div+css大家都会,但一些细节注意到了吗?
例如透明png图片在ie6下的灰色背景问题,可以通过一个dd_belatedpng.js的js文件来消除。
例如float布局,个人感觉没有inline-block好用,我们完全可以通过inlile-block布局来加快网页渲染速度。再如word-wrap和word-break的用法,估计很多个人网站主就没有注意到。当元素内出现大块英文和数字时,就会跑到元素外,就时候我们就可以用word-wrap:break-word和word-break:break-all来解决此问题。
再比如针对ie6和ie7与标准浏览器(chrome,firefox)对css的解释差异。我们一般就用到了*selecor这种方法来css hack。针对ie6的hack为“_”,ie6,7为“*”,ie8为“\0”。当然我们不鼓励推荐写出符合w3c标准的html页面,就无需css hack了。
顺带说一句,我个人非常鼓励web开发程序员用标准浏览器,而不是所谓的360,搜狗之类的。w3c标准需要web开发人员自己去推动,不能一边用着360,搜狗一边骂着ie种种bug。
个人常去看的一个前端博客:http://www.zhangxinxu.com/php/ 推荐给大家。
2、javascript
javascript的确是个好东西,而不是有些人轻视的所谓“简单的网页脚本”而已“,要想真正学会javascript,单是this指向和prototype继承就得花费不少时间和实践去理解了。至于一些细节问题比如用var和不用var声明变量的区别,javascript没有块级作用域的问题(http://www.cnblogs.com/fengmiaosen/archive/2011/01/10/1932403.html)。作为一个web开发人员,貌似也没理由不去掌握吧?举一个简单的例子:
function Person(){ this.name="caochao"; this.favorite="php"; }; Person.prototype.work=function(){ console.log("coding"); }; var p=new Person();
初始化一个实例时,javascript帮我们将实例p的原型指向了构造函数Person的原型,因此便有Person.prototype.isPrototypeOf(p)===true。在这个过程中,p的__proto__指向了Person.prototype。
笔者是大四应届生,学习的是.net和php,但是也系统的看过两本javascript好书《javascript权威指南》和《javascript高级程序设计》,我想说的是javascript真没那么简单,也不是没规律可言。在我眼里,它灵活又易用。至于javascript和jquery的关系,jquery能让人在不懂或懂一点的情况下写出脚本,但是笔者的情况是写多了jquery后总是用javascript去实现相同的效果。毕竟一打开网页就加载一个几十k的库也是一种性能消耗。只是对于涉及到浏览器兼容性的问题,例如clientWidth,scrollHeight,offsetWidth等等笔者就一直没整明白。http://wenku.baidu.com/view/bc862eea6294dd88d0d26b52.html ,所以这种地方还是要乖乖的用jquery api。
个人建议:学习javascript,看看这个 http://bonsaiden.github.com/JavaScript-Garden/ ,还要系统看看书。
3、ajax
Ajax这玩意儿搞web的都知道是个好东西,至于官方的定义以及原理就不说了,至于用jquery.ajax的就不说了,还是不鼓励引入jquery.js,用原生的javascript一样能做到相同的效果。不妨参考下此文 https://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/
4、对于服务器控件的看法
笔者现在几乎不用服务器控件了,连个head标签都有runat="server"标记让人很无奈。大三那阵,笔者就转到asp.net mvc了,用mvc+javascript做网站,才是真正的web开发。至少个人认为是这样的。如果想追求更好的效率的话,就用lamp吧,无论你对lamp的态度怎样,你都无法否认当前大多数网站是构建于此平台上的现实。自豪的宣称一下,笔者现在也要转到php了。
5、对于数据库的看法
我不是专业的dba,也不懂得太多的数据库优化,但我多少还知道如何避免大表间的连接查询,也知道要避免table scan,更知道只询所需的列。老实说,太复杂的sql语句我确实写不出,但别忘了有谷歌和百度,还有身边的同事,没有什么问题是解决不了的。
6、服务器端开发
这个才是后台程序员的主业,作为一个.net平台的程序员,自我感觉自己是挺菜的,socket不熟,多线程几乎没接触,泛型不熟练,单元测试不了解,这些都是我的短板,但面向对象原则,抽象类,接口,虚方法,覆写,异步,linq这些基本功也还是比较扎实的。作为一个web开发者,熟练对数据库的crud操作是必需的,这一点没什么好说的。对asp.net基本的理解也仅仅到达Ihttphandler,Ihttpmodule方面。至于什么应用程序,页面,控件生存周期的,真的只是了解过,你让我讲原理我只能是哑口无言了,我最多知道在哪里用,至于原理,我的水平还理解不了。作为一个.net开发人员,我偏偏没有系统看过一本讲.net的书,都是在博客园混来的或者看一些不知名的书学来的。博客园的Jimmy Zhang和Fish Li的博客便是我常去的地方,像forms authentication和cache便是看他们博客入门的。哦,对了,还有最近 逆时针の风 stream系列,真是让人受益颇多。感觉自己对System.IO命名空间内容的掌握好了很多。
7、其他
数据结构真是很重要,稍微大点的公司面试都爱考这个。所以,小生不才也买了本《数据结构与算法c#语言描述版》在看。
总结:
Tandy Tang 说的非常对,作为一个代码工看书是必须的,但动手写则更是必须的,能力只会在写的过程中提高。至于复制粘贴,则是非常不建议的,至少你也应该对着敲一遍代码并努力弄懂它。
PS:caochao祝大家写代码写的愉快!
邮箱: caochao88@gmail.com
出处: http://www.cnblogs.com/tudas
本文版权归作者和博客园共有,欢迎转载,未经作者同意须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。