计算机科学 Computer Science
数据结构 |
不知道数组和链表的差异 |
能够解释和使用数组,链表,字典等,并且能够用于实际的编程任务。 |
了解基本数据结构时间和空间的折中,比如数组vs 链表,能够解释如何实现哈希表和处理冲突,了解优先队列及其实现。 |
高等的数据结构的知识,比如B-树、二项堆、斐波那契堆、AVL树、红黑树、伸展树、跳跃表以及前缀树等。 |
|
算法 |
不能够找出一个数组各数的平均值(这令人难以置信,但是我的确在应聘者中遇到过) |
基本的排序,搜索和数据的遍历和检索算法。 |
树,图,简单的贪婪算法和分而治之算法,能够适度了解矩阵该层的含义。 |
能够辨识和编写动态规划方案,良好的图算法知识,良好的数值估算的知识,能够辨别NP问题等。 |
Working with someone who has a good topcoder ranking would be an unbelievable piece of luck! |
编程体系 |
不知道何为编译器、链接器和解释器。 |
对编译器、链接器、解释器有基本的了解。知道什么是汇编代码以及在硬件层如何工作。有一些虚拟内存和分页知识。 |
了解内核模式vs用户模式,多线程,同步原语以及它们如何实现,能够阅读汇编代码。了解网络如何工作,了解网络协议和socket级别编程。 |
了解整个程序堆栈、硬件(CPU+内存+中断+微码)、二进制代码、汇编、静态和动态链接、编码、解释、JIT(just-in-time)编译、内存碎片回收、堆、栈、存储器编址… |
|
软件工程 Software Engineering
源码版本控制 |
通过日期备份文件夹 |
VSS和初级的CVS/SVN用户 |
熟练地使用CVS和SVN特性。知道如何分支和归并,使用程序库补丁安装特性等 |
有分布式VCS系统的知识。尝试过Bzr/Mercurial/Darcs/Git |
|
自动化编译 |
只知道在IDE下编译 |
知道如何编译在命令行下编译系统 |
能够安装一个脚本构建基本的系统 |
能够安装一个脚本来构建系统并且归档,安装程序,生成发布记录和给源码控制中的代码分配标签。 |
|
自动化测试 |
认为所有的测试都是测试员的工作。 |
能够编写自动化的单元测试,能够为正在编写的代码提出良好的测试用例。 |
按照TDD (Test Driven Development)方式编写代码。 |
了解并且能够有效自动化安装,载入/性能和UI测试 |
|
程序设计 Programming
问题分解 |
只有直线式的代码,通过复制粘贴来复用 |
能够把问题分散到多个函数中 |
能够想出可复用的函数/对象来解决大题的问题 |
使用适宜的数据结构和算法,写出通用的/面向对象的代码来封装问题的易改变的层面。 |
|
系统分解 |
N想不出比单一的文件/类更好的层面 |
如果不在同一平台或没采用相同的技术,能够把问题空间和设计方案分解。 |
能够设计跨技术/平台的系统。 |
能够在多个产品线和与外部体系一体化中虚拟化和设计复制的系统。同时也能够设计支持系统监视、报告、故障恢复等。 |
|
交流 |
不能向同伴表达想法/主意。匮乏拼写和语法的能力。 |
同伴能了解你在说什么。有良好的拼写和语法能力。 |
能够和同伴进行高效的交流 |
能够使用清晰的方式了解和交流想法/设计/主意/细则,能适应每种环境的交流 |
This is an often under rated but very critical criteria for judging a programmer. With the increase in outsourcing of programming tasks to places where English is not the native tongue this issue has become more prominent. I know of several projects that failed because the programmers could not understand what the intent of the communication was. |
同一文件中代码组织 |
同一文件中组织没有依据 |
按照逻辑性或者易接近的方法 |
代码分块和对于其他源文件来说是易于是释,引用其他源文件时有良好的注释 |
文档头部有许可声明,总结,良好的注释,一致的空格缩进。文档外观美观。 |
|
跨文件代码组织 |
没够想过给代码跨文件组织 |
相关文件按文件夹分组 |
每个物理文件都有独立的目的,比如一个类的定义,一个特性的实现等。 |
代码在物理层组织紧密,在文件名上与设计和外观相匹配,可以通过文件分布方式洞察设计理念。 |
|
源码树组织 |
一切都放在一个文件夹内 |
初步地将代码分散进对应逻辑的文件夹。 |
没有循环依赖,二进制文件,库,文档,构建,第三方的代码都组织进合适的文件夹内。 |
源码树的物理布局与逻辑层次、组织方式相匹配。可以通过目录名称和组织方式洞察设计理念。 |
The difference between this and the previous item is in the scale of organization, source tree organization relates to the entire set of artifacts that define the system. |
代码可读性 |
单音节的名称(在国内应该是那些类似用汉语拼音命名的习惯) |
对文件、变量、类、方法等,有良好的命名。 |
没有长函数、注释解释不常规的代码,bug修复,代码假设。 |
代码假设验证使用断言,自然的代码流,没有深层嵌套的条件和方法 |
|
防御性编码 |
不知道这个概念 |
检查代码中所有的参数,对关键的假设进行断言 |
确保检查了返回值和使代码失败的异常。 |
有自己的库来帮助防御性编程、编写单元测试模拟故障 |
|
错误处理 |
只给乐观的情形编码 |
基本的代码错误处理,抛出异常/生成错误 |
确保错误/异常留在程序中有良好的状态,资源,连接,内存都有被合适的清理。 |
在编码之前察觉可能出现的异常,在代码的所有层次中维持一致性的异常处理策略,提出整个系统的错误处理准则。 |
|
IDE |
IDE大部分用来进行文本编辑 |
了解其周围的接口,能够高效地通过菜单来使用IDE |
了解最常操作的键盘快捷键 |
编写自定义宏 |
|
API |
需要频繁地查阅文档 |
把最频繁使用的API记在脑子里 |
广阔且深入的API知识。 |
为了使实际任务中常用API使用更加便捷,编写过API的上层库,填补API之间的缺口。 |
E.g. of API can be Java library, .net framework or the custom API for the application |
框架 |
没有使用过主平台外的任何框架 |
听过但没用过平台下流行的可用框架 |
在专业的职位中使用过一个以上的框架,通晓各框架的特色。 |
某框架的作者 |
|
需求分析 |
接受给定的需求和代码规格 |
能对规格的遗漏提出疑问 |
了解全面情况,提出需要被规格化的整体范围。 |
能够提出更好的可选方案,根据经验的浮现给出需求 |
|
脚本 |
不具备脚本工具的知识 |
批处理文件/shell脚本 |
Perl/Python/Ruby/VBScript/Powershell |
写过并且发表过可重用的代码 |
|
数据库 |
认为Excel就是数据库 |
知道基本的数据库概念,规范化、ACID(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)、事务化,能够写简单的select语句 |
能够牢记在运行时必要查询中设计良好的规范化数据库模式, 精通用户视图,存储过程,触发器和用户定义类型。知道聚集与非聚集索引之间的差异。精通使用ORM(Object Relational Mapping对象关系映射)工具 |
能做基本的数据库管理,性能优化,索引优化,编写高级的select查询,能够使用相关sql来替换游标,理解数据内部的存储,了解如何镜像、复制数据库。知道两段数据提交如何工作 |
|
经验 Experience
专业语言经验 |
命令式语言和面向对象语言 |
命令式语言,面向对象语言和说明型语言(SQL),如果了解静态类型vs动态类型,弱类型vs强类型则有加分 |
函数式语言,如果了解延缓求值,局部套用函数,延续则有加分 |
并发语言(Erlang, Oz) 逻辑语言(Prolog) |
|
专业平台经验 |
1 |
2-3 |
4-5 |
6+ |
|
专业经验年龄 |
1 |
2-5 |
6-9 |
10+ |
|
领域知识 |
没有该领域的知识 |
在该领域中曾经至少为一个产品工作过 |
在同一领域中为多个产品工作过 |
领域专家。在该领域设计和实现数种产品/方案。精通该领域使用的标准条款和协议 |
|
学识 Knowledge
工具知识 |
仅限于主要的IDE(VS.Net, Eclipse等) |
知道一些流行和标准工具的备选方案 |
对编辑器、调试器、IDE、开源的备选方案有很好的了解。比如某人了解大多数Scott Hanselman的威力工具列表中的工具,使用过ORM工具。 |
实际地编写过工具和脚本,如果这些被发布则有加分 |
|
语言接触 |
命令式语言和面向对象语言 |
命令式语言、面向对象语言和说明型语言(SQL),如果了解静态类型vs动态类型、弱类型vs强类型则有加分 |
函数式语言,如果了解延缓求值、局部套用函数、continuations (源于scheme中的一种高级控制结构)则有加分 |
并发语言(Erlang, Oz) 逻辑语言(Prolog) |
|
代码库知识 |
从来没有查询过代码库 |
基本的代码层知识,了解如果构建系统 |
良好的代码库工作知识,实现过几次bug修复或者完成了一些细小的特性 |
实现了代码库中多个大型特性,能够轻松地将多数特性的需求变更具体化,从容地处理bug修复。 |
|
下一代技术知识 |
从来没听说过即将到来的技术 |
听说过某领域即将到来的技术 |
下载过alpha preview/CTP/beta版本,并且读过一些文章和手册 |
试用过预览版而且实际地构建过某物,如果共享给其他人的话则有加分 |
|
平台内部 |
对平台内部毫无所知 |
有平台基本的内部工作的知识 |
深度的平台内部知识,能够设想平台如何将程序转换成可执行代码。 |
编写过增强平台或者为其平台内部提供信息的工具。比如,反汇编工具,反编译工具,调试工具等。 |
|
书籍 |
菜鸟系列,21天系列,24小时系列,蠢货系列... |
《代码大全》,《别让我思考》, 《精通正则表达式》 |
《设计模式》,《人件》,《代码珠玑》,《算法设计手册》,《程序员修炼之道》,《人月神话》 |
《计算机程序设计与解释》,《事务处理:概念与技术》,《计算机程序设计模型》,《计算机程序设计艺术》,《数据库系统导论》 C.J Date版,《Thinking Forth》 ,《Little Schemer》(没找到其中译本) |
|
博客 |
听过但是从来抽不出空去接触 |
阅读一些科技/编程/软件工程的博客,并且经常的收听一些播客 |
维护一些博客的链接,收集博主分享的有用的文章和工具 |
维护一个在编程方面,分享有个人见解和思考的博客 |
相关推荐
程序员能力矩阵 Programmer Competency Matrix 注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。
[译文]程序员能力矩阵 Programmer Competency Matrix.htm
需要程序员经常刷题吗程序员能力矩阵 31 个问题,1-4 个选项。 等级范围:31-124 A. 计算机科学 1级 2 级 级别 3 4级 1. 数据结构 不知道Array和LinkedList的区别 能够在实际编程任务中解释和使用数组、链表、字典等...
与 Vue 互动的“程序员能力矩阵” 这是最初由创建的“程序员能力矩阵”的交互式版本。 主要区别在于,此版本包含技能统计和推荐。 你的关卡也保存到 localStorage,所以不要害怕关闭标签并稍后回来。 屏幕截图 构建...
内容概要:本文介绍了一种基于小生境粒子群算法的配电网有功-无功协调优化方法,旨在解决传统粒子群算法易陷入局部最优的问题。文中详细展示了MATLAB代码实现,重点介绍了小生境机制的应用,如动态调整小生境半径、自适应变异概率以及跨小生境信息交换等策略。此外,针对光伏出力波动,提出了滑动时间窗和平滑因子的方法来优化储能调度,确保电压稳定并降低网损。实验结果显示,在33节点测试系统上,网损降低12.7%,电压合格率提高8.3%,收敛速度快且稳定。 适合人群:电力系统研究人员、智能电网开发者、MATLAB编程爱好者。 使用场景及目标:适用于配电网优化调度,特别是含有大量分布式能源接入的场景。主要目标是提高电网运行效率,降低网损,保持电压稳定,优化储能调度。 其他说明:文中提供了详细的代码实现和参数配置建议,便于读者复现实验结果。同时,作者还分享了一些调试经验和技巧,帮助读者更好地理解和应用该算法。
内容概要:本文详细介绍了如何使用Matlab实现K-Means聚类算法,涵盖从数据加载、标准化、聚类执行到结果保存和可视化的完整流程。文中提供了具体的Matlab代码示例,解释了关键参数如聚类个数K的选择方法,以及如何通过肘部法则确定最佳K值。同时,强调了数据标准化的重要性,并给出了处理高维数据和保存结果的最佳实践。此外,还讨论了一些常见的错误及其解决方案,如数据未标准化导致的距离计算偏差等问题。 适合人群:具有一定编程基础并希望通过Matlab实现K-Means聚类算法的研究人员、学生和工程师。 使用场景及目标:适用于需要对数据进行无监督分类的场景,如市场细分、图像压缩、异常检测等。通过学习本文,读者能够掌握K-Means聚类的基本原理和实现方法,从而应用于实际数据分析任务。 其他说明:本文不仅提供完整的代码实现,还附带了许多实用的小技巧,如如何避免局部最优解、如何选择合适的K值、如何处理高维数据等。对于初学者来说,是一份非常有价值的参考资料。
内容概要:本文详细介绍了如何利用MATLAB及其内置的深度学习工具箱,采用一维卷积神经网络(CNN)构建单变量时间序列预测模型的方法。主要内容涵盖数据预处理(如标准化、滑动窗口构造)、模型架构设计(包括卷积层、池化层的选择)、训练参数设定以及结果可视化和性能评估等方面。文中特别强调了针对时间序列特性的优化措施,如调整卷积核大小、引入层标准化等,并提供了具体的代码示例。 适用人群:适用于具有一定MATLAB编程基础和技术背景的数据科学家、机器学习工程师或研究人员,尤其是那些希望探索除LSTM之外的时间序列预测方法的人群。 使用场景及目标:该方法可用于各种具有周期性特点的时间序列数据分析任务,如气象预报、能源消耗预测等领域。主要目标是提供一种高效、易实现的替代方案,在保证预测精度的同时提高模型训练效率。 其他说明:作者指出,虽然CNN在处理长时间依赖方面不如LSTM,但对于某些特定类型的短期时间序列预测任务,CNN能够取得令人满意的结果。此外,文中还分享了一些实践经验,如如何应对常见的预测误差问题,以及进一步提升模型性能的建议。
集体招聘总结.xls
内容概要:本文详细介绍了基于SMIC 0.18μm工艺的简单锁相环(PLL)电路的设计与实现。作者通过搭建一个由五个核心模块组成的PLL结构,帮助新手理解锁相环的工作原理。文中具体讲解了环形VCO、电荷泵、环路滤波器和分频器的设计细节及其优化技巧。例如,环形VCO采用7级电流饥饿型反相器串联,电荷泵使用最小尺寸开关管,环路滤波器为简单的RC网络,分频器则采用了经典÷32结构。此外,文章还分享了一些实用的调试经验和常见问题解决方案,如温度补偿、锁定时间和相位噪声的优化。 适用人群:初学者和有一定模拟电路基础的研发人员。 使用场景及目标:适用于希望深入了解锁相环工作原理和技术细节的学习者。通过动手实践,掌握PLL的基本设计流程和调试技巧,能够独立完成类似项目的初步设计。 其他说明:本文不仅提供了理论指导,还结合了大量的实战经验和具体的代码示例,使读者能够在实践中更好地理解和应用所学知识。
员工离职面谈记录表.doc
1、文件说明: Centos8操作系统tesseract-langpack-chi_tra-4.0.0-6.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf tesseract-langpack-chi_tra-4.0.0-6.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
内容概要:本文详细介绍了AHC主动海浪补偿器在海洋平台及其相关装备中的应用。AHC作为一种智能‘稳定器’,通过实时监测海浪运动,利用先进的控制算法(如PID控制算法)和机械装置,主动调整平台或装备的位置,以抵消海浪的影响,确保相对稳定的作业环境。文中不仅探讨了控制算法的核心原理,还展示了具体的应用实例,如波浪补偿舷梯的设计与实现。此外,文章还涉及了传感器数据处理、执行机构控制等方面的内容,强调了AHC在保障海上作业安全和提高工作效率方面的重要作用。 适合人群:从事海洋工程、自动化控制领域的研究人员和技术人员,以及对智能控制系统感兴趣的读者。 使用场景及目标:适用于需要在复杂海洋环境中保持稳定性的各种海洋平台和装备。目标是通过理解和应用AHC技术,提高海上作业的安全性和效率。 其他说明:文章提供了多个代码示例,帮助读者更好地理解控制算法的具体实现。同时,文中提到了一些实际应用中的挑战和解决方案,如传感器数据同步、执行机构的响应速度等问题。
981ac-main.zip
内容概要:本文探讨了孤岛微电网二次控制领域的创新技术,重点介绍了下垂控制和动态事件触发机制的应用。下垂控制通过模拟传统同步发电机的外特性,依据功率-频率、电压-无功的下垂关系,实现分布式电源(DG)间的有功和无功功率分配。然而,单纯依靠下垂控制可能导致频率和电压偏差,因此引入了二次控制来消除这些偏差并提高电能质量。文中还提出了一种基于动态事件触发的二次控制策略,该策略只在系统状态变化达到一定程度时进行通信和控制动作,从而减少通信负担,提升系统效率。此外,文章展示了如何通过动态事件触发机制实现有功功率均分以及处理异步通信一致性问题,确保微电网系统的稳定运行。 适用人群:从事微电网研究和技术开发的专业人士,尤其是关注分布式能源系统优化的研究人员和工程师。 使用场景及目标:适用于希望优化孤岛微电网性能的研究项目,旨在通过创新的二次控制技术提高系统的频率和电压稳定性、功率分配均匀性和通信效率。 其他说明:文中提到的相关研究成果已在多篇学术文献中得到验证,感兴趣的读者可以通过参考文献进一步了解技术细节。
【制度】员工档案管理制度 (1).doc
内容概要:本文详细介绍了应用于电镀生产线的西门子S7-300 PLC控制系统的程序设计、硬件配置以及调试过程中积累的实际经验。主要内容涵盖温度控制、条码记录、行车定位、故障排查等方面的技术细节。文中展示了多个关键功能模块的具体实现方法,如PID温度控制、条码数据处理、行车定位判断等,并分享了一些实用的调试技巧和注意事项。此外,还讨论了硬件配置中的重要细节,如模块地址分配、网络拓扑设计等。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是对PLC编程有一定基础的人群。 使用场景及目标:适用于需要深入了解和掌握电镀生产线自动化控制技术的专业人士。目标是帮助读者理解S7-300 PLC在电镀生产线中的具体应用,提高实际项目的开发效率和可靠性。 其他说明:文章不仅提供了详细的程序代码示例,还分享了许多来自一线的真实案例和实践经验,对于解决实际工程中的问题具有很高的参考价值。
员工生日关怀方案
内容概要:本文详细介绍了如何利用Python实现一个智能水泵控制系统,涵盖模式切换、故障自动投入、定时轮换和压力调节四大核心功能。首先,通过设置不同模式(如先停后启或先启后停)来满足特定应用场景的需求。其次,在故障自动投入方面,系统能够检测到水泵故障并迅速切换到备用泵,确保连续供水。再次,为了均衡水泵的工作负荷,系统定期进行定时轮换操作。最后,根据管道内的实时压力情况,系统可以自动调整工作的水泵数量,保持恒定的压力水平。此外,文中还讨论了如何通过配置文件灵活调整系统参数,以及采用PID简化版算法进行压力控制的方法。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对水泵控制有一定了解并希望深入研究的人士。 使用场景及目标:适用于需要精确控制多台水泵协同工作的工业环境,旨在提高系统的可靠性和效率,延长设备使用寿命,节约能源成本。 其他说明:文中提供了详细的代码示例,帮助读者更好地理解和实施所介绍的技术方案。同时强调了实际应用中的注意事项,如压力传感器的正确安装和预防措施等。
基于51单片机protues仿真的多功能万用表设计(仿真图、源代码、AD原理图、流程图) 数字多用表既可以测量电压,也可以测量电流、电阻,功能齐全,使用便捷。 本选题采用8位8路A/D转换器ADC0808和8051单片机设计一台数字多用表,能进行电压、电流和电阻的测量,测量结果通过LED数码管显示,通过安检进行测量功能转换。电压测量范围0~5V,测量误差约为±0.02V,电流测量范围为1~100mA,测量误差约为±0.5mA,电阻测量范围0~1000Ω,测量误差约为±2Ω。 1、通过按键设置测量模式; 2、电压采用直接测量方式;电流使用差压放大测量;电阻使用恒流源把阻值转换成电压。 预计难易程度:难度适中预计工作量大小:8周 1.熟练掌握单片机设计基本原理;熟悉8051单片机的工作原理; 2.熟练掌握Proteus软件的使用方法; 3.利用Proteus软件仿真实现数字多用表的测量功能。
员工关怀服务建议方案.doc