请注意,每个级别的知识都是累积的;在级别n意味着您还知道从低于n的级别的所有内容。
知道基本数据结构的空间和时间权衡,阵列与链接列表,能够解释如何实现哈希特,并且可以处理碰撞,优先队队列和实现它们的方法等。
了解B树,二项式和斐波纳契,AVL /红黑树,SPLAY树,跳过列表,尝试等高级数据结构。
无法在数组中找到数字的平均值(很难相信,但我采访了此类候选人)
树,图形,简单的贪婪和划分和征服算法,能够了解该矩阵的级别的相关性。
能够识别和代码动态编程解决方案,良好的图形算法知识,良好的数字计算算法知识,能够识别NP问题等。
基本了解编译器,链接器和口译员。了解哪些装配代码是什么以及在硬件级别工作的工作原理。虚拟内存和分页的一些了解。
理解内核模式与用户模式,多线程,同步原语以及它们的实现方式,能够读取汇编代码。了解网络的工作原理,了解网络协议和套接字级编程。
了解整个编程堆栈,硬件(CPU + Memory + Cache + Interrupts + Microcode),二进制代码,装配,静态和动态链接,编译,解释,JIT编译,垃圾收集,堆,堆栈,内存寻址......
熟练使用CVS和SVN功能。知道如何分支和合并,使用修补程序设置存储库属性等。
可以设置脚本来构建系统,也可以文档,安装程序,生成发行说明并标记源控制中的代码
已编写自动单元测试,并为正在编写的代码提出良好的单元测试用例
使用适当的数据结构和算法,并提出了通用/面向对象的代码,该代码封装了可能需要更改的问题的方面。
能够分解问题空间和设计解决方案,只要它在同一平台/技术范围内
能够可视化和设计具有多种产品线的复杂系统和与外部系统的集成。还应该能够设计操作支持系统,如监控,报告,失败等。
能够以明确的方式理解和传达思想/设计/想法/规范,并根据上下文调整通信
这是一个经常被评级但判断程序员的非常关键的标准。随着编程任务的外包增加到英语不是母语,这个问题变得更加突出。我知道几个失败的项目,因为程序员无法理解沟通的意图是什么。
文件具有许可证标题,摘要,评论得很好,一致的白色空间使用情况。文件应该看起来很漂亮。
每种物理文件都具有独特的目的,例如,一个类定义,一个特征实现等。
物理级别的代码组织与设计密切匹配,并查看文件名和文件夹分发提供了深入设计
物理布局源树匹配逻辑层次结构和组织。目录名称和组织提供了对系统设计的见解。
这个和前一个项目之间的区别在于组织的规模,源树组织涉及定义系统的整套工件集。 代码假设使用断言验证,代码自然地流动 - 没有条件或方法的深度嵌套 确保检查返回值并检查可能失败的代码周围的异常。 有自己的图书馆可以帮助防守编码,写出模拟故障的单元测试 确保错误/异常在良好状态下留下程序,资源,连接和内存全部都已正确清理 要检测可能的异常的代码,请在所有代码层中维护一致的异常处理策略,提出了整个系统的例外处理指南。 有书面图书馆坐在API的顶部,以简化常用任务并填补API中的空隙
例如。 API可以是Java库,.NET Framework或应用程序的自定义API
使用了一个以上的框架,以专业的容量,并符合框架的习语。
能够设计良好和规范化的数据库模式,牢记必须运行的查询,熟练使用视图,存储过程,触发器和用户定义类型。知道群集和非群集索引之间的差异。精通使用ORM工具。
可以做基本数据库管理,性能优化,索引优化,写入高级选择查询,能够用关系SQL替换光标用法,了解如何在内部存储数据,了解如何在内部存储索引,了解如何镜像数据库,复制等方式。了解两阶段提交的工作原理。
必要的,面向对象和陈述(SQL),如果他们理解静态VS动态打字,弱与强键入和静态推断类型
领域专家。设计并实施了域中的几种产品/解决方案。良好地掌握标准术语,在域中使用的协议。
关于编辑,调试器,IDE,开源替代方案等的良好知识。知道来自Scott Hanselman的电动工具列表的大多数工具的人。使用了ORM工具。
必要的,面向对象和陈述(SQL),如果他们理解静态VS动态打字,弱与强键入和静态推断类型 代码库的良好工作知识,已经实现了几个错误修复,也许是一些小功能。 在CodeBase中实现了多个大功能,可以轻松地可视化大多数功能或错误修复所需的更改。 已经玩了预览,并实际上已经用它建造了一些东西,并作为与其他人共享的奖金 深入了解平台内部,并且可以想象平台如何采用程序并将其转换为可执行代码。 有书面的工具,可以加强或提供平台内部的信息。 例如, 拆卸,分解商,调试等。 计算机程序的结构和解释,概念技术,计算机编程模型,计算机编程艺术,数据库系统,C. J日期,思考,小方案
使用他/她收集的一些有用文章和工具的集合维护链接博客