欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP水平自测评定

程序员文章站 2022-05-07 12:09:43
...
这些天看了下php等级水平的评定,又看到了前进的方向。

分享下,这样和我曾经一样迷茫的phper不用迷茫了。

0级:(没有计算机编程基础,在培训学校里培训了三个月会php或者以前搭建过网站,又有很长一段时间没写过代码的社会人员)。特点:懂一大堆东西都说学过,实际测试的时候,机试写程序上反应半天,笔试的时候,题目鲜有答对。

入门级:
可以完整的搭建自己的网站和进行域名解析绑定操作,
在windows下能完整的配置环境,能看懂dedecms,ecshop,smarty等代码,可以进行模板的修改和常规功能的二次开发。
可以用thinkphp或者YII进行CURD操作。可以对企业网站数据库进行迁移备份。掌握ajax,cookie,session等基本概念的使 用。了解php的语法,数组,字符串,可以写最简单的算法比如简单的随机分组读取,用过100个以上的php函数,同时需要掌握一定div+css html js jquery的前端知识(这种php程序员大部分在外包或者对企业网站进行维护公司)

初级:
可以在Linux下独立的配置LAMP或者LNMP环境(保持简单的运行即可)使用过20个以上的Linux命令,掌握Linux的目录大致结构。可以 手写一定的原生mysql和对mysql进行初步的管理。理解了MVC系统的构成,可以完成对该系统的一些简单改写使得更加符合开发要求。理解php库的 概念,同时使用过五个以上其他的函数库。可以用php在理解了业务逻辑的情况下,完成小型模块的编写并进行维护,理解api和数据交换概念,可以很快完成 对各种开放API同时可以使用svn或者git进行合作协同开发(比如腾讯和微信api)进行组合利用。(很大一部分初创公司招聘的php程序员)

中级进阶:
可以看懂LNMP的log日志,使用过40个以上的Linux的命令(组合算新功能命令) 可以完成简单的shell脚本编写,完成部分自动化工作,可以自己独立make安装php的某个需要支持库。 理解性的配置nginx上的server/fastcgi_pass/access_log等选项。可以自己独立make安装php的某个需要支持库
熟悉各种跟MySQL操作链接的api(mysql/mysqli/PDO)等的不同。能很快的看懂一个mvc结构框架。理解一些数据库的读取效率与基 本的设计(可以独立在不考虑效率的情况表现一套简单的业务逻辑,例如签到系统)道基本的InnoDB/MyISAM索引存储结构和不同(聚簇索引,B 树);知道基本的InnoDB事务处理机制了解部分MySQL异常情况的处理方案。同时了解nosql,能使用Redis或者Memcache进行数据的 储存。
理解程序算法结构对程序运行的效率影响,可以用php进行模块开发,同时对自己熟悉的框架进行拓展性改造。
熟悉基本的HTTP协议(协议代码200/300/400/500,基本的HTTP交互头)(中型公司招聘的php写功能开发的,小公司的主管也常常在该级)

中级:
能够流畅的使用Shell脚本来完成很多自动化的工作;awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作;基本能够安装大部分非特殊的Linux程序(包括各种库、包、第三方依赖等等,比如 MongoDB/Redis/Sphinx/Luncene/SVN之类的);了解基本的Linux服务,知道如何查看Linux的性能指标数据,
了解复杂一些的Nginx配置;包括 多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超时等相关配置和性能影响;知道nginx除了web server,还能够承担代理服务器、反向静态服务器等配置;知道基本的nginx配置调优;知道如何配置权限、编译一个nginx扩展到nginx;知 道基本的nginx运行原理(master/worker机制,epoll),知道为什么nginx性能比apache性能好等知识。
熟悉常规SQL优化(group by/order by/rand优化等);除了能够搭建MySQL,还能够冷热备份MySQL数据,利用主从配置进行读取优化,知道影响innodb/myisam性能的 配置选项(比如key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit等)
PHP上已经对大部分框架掌握了(一般会用过俩种以上做过项目开发),可以写出自己的MVC框架,理解常见的面向对象开发方式(抽象工厂/单例/观察者 /命令链/策略/适配器 等模式)由于php层已经到了瓶颈层,会对C/c++进行一定的了解,可以对用C或者c++写一定的简单的程序并进行编译等操作。为了优化性能,可能会用 到HHVM等工具
由于可以对一般的系统进行设计,需要考虑到性能和优化方面,需要Memcached和Redis的异同和应用场景,了解Memcahed的一些基本特性 和限制,比如最大的value值,知道PHP跟他们的使用结合;Redis了解基本工作原理和使用,了解常规的数据类型,知道什么场景应用什么类型,了解 Redis的事务等等。原理部分,能够大概了解Memcached的内存结构(slab机制),redis就了解常用数据类型底层实现存储结构(SDS/ 链表/SkipList/HashTable)等等,顺便了解一下Redis的事务、RDB、AOF(大部分公司招聘公司里提到的高级php要求)

高级进阶:
可以用c/c++进行写小型规模的程序,基本的C/C++语法熟悉(指针、数组操作、字符串、常规标准API)和数据结构(链表、树、哈希、队列)有一 定的熟悉下;会简单的makefile文件编写,能够使用简单的GCC/GDB的程序编译简单调试工作;对基本的网络编程有大概了解。可以使用高级复杂的 Linux命令完成工作(watch/tcpdump/starce/ldd/ar等)能够编写比较复杂的shell脚本(超过500行)来协助完成很多 包括备份、自动化处理、监控等工作的shell;对awk/sed/perl 等应用已经如火纯青,能够随意操作控制处理文本统计分析各种复杂格式的数据;对Linux内部机制有一些了解,对内核模块加载,启动错误处理等等有个基本 的处理;同时对一些其他相关的东西也了解,比如NFS、磁盘管理等等。
数据库方面可以对大批量数据的导入导出,线上大批量数据的更改表结构或者增删索引字段等等高危操作;除了安装配置,已经能够处理更多复杂的MySQL的 问题,比如各种问题的追查,主从同步延迟问题的解决、跨机房同步数据方案、MySQL高可用架构等都有涉及了解;对MySQL应用层面,对MySQL的核 心关键技术比较熟悉,比如事务机制(隔离级别、锁等)、对触发器、分区等技术有一定了解和应用;对MySQL性能方面,有包括磁盘优化(SAS迁移到 SSD)。
理解php-fpm工作机制(比如php-fpm在不同配置机器下面开启进程数量计算以及原理),对zend引擎有基本熟悉(vm/gc/stream 处理),阅读过基本的PHP内核源码(或者阅读过相关文章),对PHP内部机制的大部分核心数据结构(基础类型/Array/Object)实现有了解, 对于核心基础结构(zval/hashtable/gc)有深入学习了解;能够进行基本的PHP扩展开发,了解一些扩展开发的中高级知识(minit /rinit等),熟悉php跟apache/nginx不同的通信交互方式细节(mod_php/fastcgi)。(非常非常厉害的php程序员,圈 子太窄了,就知道一俩个)

高级:
代码内核部分基本都阅览过(lmnp),熟悉多进程、多线程编程;多进程情况下面了解大部分多进程之间的通信方式,能够灵活选择通信方式(共享内存/信号 量/管道等);多线程编程能够良好的解决锁冲突问题,并且能够进行多线程程序的开发调试工作;同时对网络编程比较熟悉,了解多进程模型/多线程模型/异步 网络IO模型的差别和选型,熟悉不同异步网络IO模型的原理和差异(select/poll/epoll/iocp等),并且熟悉常见的异步框架(ACE /ICE/libev/libevent/libuv/Boost.ASIO等)和使用,如果闲暇也可以看看一些国产自己开发的库(比如muduo);同 时能够设计好的高并发程序架构(leader-follow/master-worker等);了解大部分C/C++后端Server开发中的问题(内存 管理、日志打印、高并发、前后端通信协议、服务监控),知道各个后端服务RPC通信问题(struct/http/thirft/protobuf等); 能够更熟络的使用GCC和GDB来开发编译调试程序,在线上程序core掉后能够迅速追查跟踪解决问题。(超越了php的范畴,感觉像独孤求败了)

相关标签: PHP水平自测评定