NET网页编程之程序员才能矩阵 Programmer Competency Matrix
数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。[译文]程序员才能矩阵ProgrammerCompetencyMatrix注重:每一个条理的常识都是渐增的,位于条理n,也蕴涵了你需懂得一切低于条理n的常识。
</p>盘算机迷信ComputerScience
2n(Level0)n2(Level1)n(Level2)log(n)(Level3)数据布局不晓得数组和链表的差别可以注释和利用数组,链表,字典等,而且可以用于实践的编程义务。懂得基础数据布局工夫和空间的折衷,好比数组vs链表,可以注释怎样完成哈希表和处置抵触,懂得优先行列及实在现。初等的数据布局的常识,好比B-树、二项堆、斐波那契堆、AVL树、红黑树、舒展树、腾跃表和前缀树等。算法不克不及够找出一个数组各数的均匀值(这使人难以相信,可是我切实其实在招聘者中碰到过)基础的排序,搜刮和数据的遍历和检索算法。树,图,复杂的贪心算法和分而治之算法,可以过度懂得矩阵该层的寄义。可以辨识和编写静态计划计划,优秀的图算法常识,优秀的数值预算的常识,可以分辨NP成绩等。编程系统不晓得作甚编译器、链接器息争释器。对编译器、链接器、注释器有基础的懂得。晓得甚么是汇编代码和在硬件层怎样事情。有一些假造内存和分页常识。懂得内核形式vs用户形式,多线程,同步原语和它们怎样完成,可以浏览汇编代码。懂得收集怎样事情,懂得收集协定和socket级别编程。懂得全部程序仓库、硬件(CPU+内存+中止+微码)、二进制代码、汇编、静态和静态链接、编码、注释、JIT(just-in-time)编译、内存碎片接纳、堆、栈、存储器编址…软件工程SoftwareEngineering
2n(Level0)n2(Level1)n(Level2)log(n)(Level3)源码版本把持经由过程日期备份文件夹VSS和低级的CVS/SVN用户纯熟地利用CVS和SVN特征。晓得怎样分支和合并,利用程序库补钉安装特征等有散布式VCS体系的常识。实验过Bzr/Mercurial/Darcs/Git主动化编译只晓得在IDE下编译晓得怎样编译在命令行下编译体系可以安装一个剧本构建基础的体系可以安装一个剧本来构建体系而且回档,安装程序,天生公布纪录和给源码把持中的代码分派标签。主动化测试以为一切的测试都是测试员的事情。可以编写主动化的单位测试,可以为正在编写的代码提出优秀的测试用例。依照TDD(TestDrivenDevelopment)体例编写代码。懂得而且可以无效主动化安装,载进/功能和UI测试程序计划Programming
2n(Level0)n2(Level1)n(Level2)log(n)(Level3)成绩分化只要直线式的代码,经由过程复制粘贴来复用可以把成绩分离到多个函数中可以想出可复用的函数/工具来办理年夜题的成绩利用合适的数据布局和算法,写出通用的/面向工具的代码来封装成绩的易改动的层面。体系分化N想不出比单一的文件/类更好的层面假如不在统一平台或没接纳不异的手艺,可以把成绩空间和计划计划分化。可以计划跨手艺/平台的体系。可以在多个产物线和与内部系统一体化中假造化和计划复制的体系。同时也可以计划撑持体系监督、呈报、妨碍恢复等。交换不克不及向伙伴表达设法/主张。匮乏拼写和语法的才能。伙伴能懂得你在说甚么。有优秀的拼写和语法才能。可以和伙伴举行高效的交换可以利用明晰的体例懂得和交换设法/计划/主张/细则,能顺应每种情况的交换统一文件中代码构造统一文件中构造没有根据依照逻辑性大概易靠近的办法代码分块和关于其他源文件来讲是易因而释,援用其他源文件时有优秀的正文文档头部有允许声明,总结,优秀的正文,分歧的空格缩进。文档表面美妙。2n(Level0)n2(Level1)n(Level2)log(n)(Level3)跨文件代码构造没够想过给代码跨文件构造相干文件按文件夹分组每一个物理文件都有自力的目标,好比一个类的界说,一个特征的完成等。代码在物理层构造严密,在文件名上与计划和表面相婚配,能够经由过程文件散布体例洞察计划理念。源码树构造统统都放在一个文件夹内开端地将代码分离进对应逻辑的文件夹。没有轮回依附,二进制文件,库,文档,构建,第三方的代码都构造进符合的文件夹内。源码树的物理结构与逻辑条理、构造体例相婚配。能够经由过程目次称号和构造体例洞察计划理念。代码可读性单音节的称号(在国际应当是那些相似用汉语拼音定名的习气)对文件、变量、类、办法等,有优秀的定名。没有长函数、正文注释不惯例的代码,bug修复,代码假定。代码假定考证利用断言,天然的代码流,没有深层嵌套的前提和办法进攻性编码不晓得这个观点反省代码中一切的参数,对关头的假定举行断言确保反省了前往值和使代码失利的非常。有本人的库来匡助进攻性编程、编写单位测试摹拟妨碍2n(Level0)n2(Level1)n(Level2)log(n)(Level3)毛病处置只给悲观的情况编码基础的代码毛病处置,抛出非常/天生毛病确保毛病/非常留在程序中有优秀的形态,资本,毗连,内存都有被符合的清算。在编码之前发觉大概呈现的非常,在代码的一切条理中保持分歧性的非常处置战略,提出全部体系的毛病处置原则。IDEIDE年夜部分用来举行文本编纂懂得其四周的接口,可以高效地经由过程菜单来利用IDE懂得最常操纵的键盘快速键编写自界说宏API必要频仍地查阅文档把最频仍利用的API记在头脑里宽广且深切的API常识。为了使实践义务中经常使用API利用加倍便利,编写过API的下层库,弥补API之间的缺口。框架没有利用过主平台外的任何框架听过但没用过平台下游行的可用框架在专业的职位中利用过一个以上的框架,知晓各框架的特征。某框架的作者2n(Level0)n2(Level1)n(Level2)log(n)(Level3)需求剖析承受给定的需乞降代码规格能对规格的漏掉提出疑问懂得周全情形,提出必要被规格化的全体局限。可以提出更好的可选计划,依据履历的出现给出需求剧本不具有剧本工具的常识批处置文件/shell剧本Perl/Python/Ruby/VBScript/Powershell写过而且宣布过可重用的代码数据库以为Excel就是数据库晓得基础的数据库观点,标准化、ACID(原子性Atomicity、分歧性Consistency、断绝性Isolation、耐久性Durability)、事件化,可以写复杂的select语句可以切记在运转时需要查询中计划优秀的标准化数据库形式,精晓用户视图,存储历程,触发器和用户界说范例。晓得会萃与非会萃索引之间的差别。精晓利用ORM(ObjectRelationalMapping工具干系映照)工具能做基础的数据库办理,功能优化,索引优化,编写初级的select查询,可以利用相干sql来交换游标,了解数据外部的存储,懂得怎样镜像、复制数据库。晓得两段数据提交怎样事情履历Experience
2n(Level0)n2(Level1)n(Level2)log(n)(Level3)专业言语履历命令式言语和面向工具言语命令式言语,面向工具言语和申明型言语(SQL),假如懂得静态范例vs静态范例,弱范例vs强范例则有加分函数式言语,假如懂得延缓求值,部分套用函数,持续则有加分并发言语(Erlang,Oz)逻辑言语(Prolog)专业平台履历12-34-56+专业履历岁数12-56-910+范畴常识没有该范畴的常识在该范畴中已经最少为一个产物事情过在统一范畴中为多个产物事情过范畴专家。在该范畴计划和完成数种产物/计划。精晓该范畴利用的尺度条目和协定学问Knowledge
2n(Level0)n2(Level1)n(Level2)log(n)(Level3)工具常识仅限于次要的IDE(VS.Net,Eclipse等)晓得一些盛行和尺度工具的备选计划对编纂器、调试器、IDE、开源的备选计划有很好的懂得。好比或人懂得年夜多半ScottHanselman的能力工具列表中的工具,利用过ORM工具。实践地编写过工具和剧本,假如这些被公布则有加分言语打仗命令式言语和面向工具言语命令式言语、面向工具言语和申明型言语(SQL),假如懂得静态范例vs静态范例、弱范例vs强范例则有加分函数式言语,假如懂得延缓求值、部分套用函数、continuations(源于scheme中的一种初级把持布局)则有加分并发言语(Erlang,Oz)逻辑言语(Prolog)代码库常识历来没有查询过代码库基础的代码层常识,懂得假如构建体系优秀的代码库事情常识,完成过几回bug修复大概完成了一些微小的特征完成了代码库中多个年夜型特征,可以轻松地将多半特征的需求变动详细化,沉着地处置bug修复。下一代手艺常识历来没传闻过行将到来的手艺传闻过某范畴行将到来的手艺下载过alphapreview/CTP/beta版本,而且读过一些文章和手册试用过预览版并且实践地构建过某物,假如共享给其别人的话则有加分2n(Level0)n2(Level1)n(Level2)log(n)(Level3)平台外部对平台外部毫无所知有平台基础的外部事情的常识深度的平台外部常识,可以假想平台怎样将程序转换成可实行代码。编写过加强平台大概为其平台外部供应信息的工具。好比,反汇编工具,反编译工具,调试工具等。书本菜鸟系列,21天系列,24小时系列,蠢货系列...《代码年夜全》,《别让我思索》,《精晓正则表达式》《计划形式》,《人件》,《代码珠玑》,《算法计划手册》,《程序员修炼之道》,《人月神话》《盘算机程序计划与注释》,《事件处置:观点与手艺》,《盘算机程序计划模子》,《盘算机程序计划艺术》,《数据库体系导论》C.JDate版,《ThinkingForth》,《LittleSchemer》(没找到个中译本)博客听过可是历来抽不出空往打仗浏览一些科技/编程/软件工程的博客,而且常常的收听一些播客保护一些博客的链接,搜集博主分享的有效的文章和工具保护一个在编程方面,分享有团体看法和思索的博客我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 逐步缩小出错代码段的范围,最终确定错误代码的位置。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。
页:
[1]