• 展开微博窗口
  • QQ:826945906
  • 微信:u200714928
  • 展开分类目录
胡伟

php面试题

面试题列举如下: 1.redis与memcache差别? 答:key大小、持久化、速度、线程模型、key类型、淘汰策略、集群搭建区别、底层数据结构的差异、内存利用率、碎片处理。 2.innodb的特点? 答:行锁、支持事务、不支持全文检索、读少写多的场景更有利、 3.mysql索引使用的原则?依据这些原则,如何为表加索引? 答:最左前缀原则。 4.php 变量的销毁机制? 答:php5和php7的差别比较大,php5中引用计数存在zval中,而php7中引用计数存在zend_xxx结构中。 5.php array_merge的功能?自己实现一下? 答:数组合并,数字键的value直接加在原有数据的后面,字符键的value或是替换,或是新增。 6.php 里面有哪些数组操作函数? 答:array,array_mer …

php程序的调试

php 调试最常用的代码中添加 echo、var_dump、print_r 和 exit,以及打日志自不必说了,大概会点php的人都知道这两条。 下面说说需要更深入的调试方法: 1.使用xdebug进行调试 XDebug 是 C/S 结构,其中 Client 是 PHP 中安装的 Xdebug,Server 是 IDE 中安装的插件,使用 DBGP 协议通信。PHP 运行脚本时,通过 Xdebug 插件向 IDE 发送调试信息,并接收 IDE 发过来的控制信号。需要为 PHP 安装并开启 Xdebug,然后设置 IDE 的 Xdebug 插件,使二者可以通信。 优缺点: 支持单步调试和任意变量值的获取 配置复杂,需要 IDE 安装插件 支持跟浏览器的配合,需要请求中携带 XDEBUG_SESSION_START 参数 2. Web App 调试 可以将要调试输出的变 …

PHP程序员职业发展路线

根据了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,针对很多程序员对未来的迷茫,特别对技术学习的盲目和慌乱,简单梳理了每个阶段PHP程序员的技术要求,来帮助PHP程序猿们做对照设定学习成长目标。 本文按照目前主流技术做了一个基本的梳理,整个假设是基于PHP程序员的基础比较扎实的情况下进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请理解仅代表一家之言。(未来技术变化不在讨论范围)。 第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在PHP中型系统中支持某个PHP功能 …

PHP编码规范

  0 前言   编码风格没有太多的好坏之分, 最重要的是风格保持一致,编码规范有助于规范我们编码的风格,使代码具有更好的可读性。编码风格百家齐放,不利于我们代码的维护和传承,根据大家平时的开发情况,制定了此PHP编码规范。 每项规范前面的(强制) 代表该规范需要强制执行, (建议)代表推荐执行但不强制。 注: 文中所有的变量名前面为了方便没有加”$”, 示意即可。 1 排版 1-1:(强制)程序块要采用缩进风格编写,缩进的空格数为4个。 说明:不同的缩进风格对代码的可读性影响很大,以tab为缩进单位在不同的tab step   下可读性也相差很多,所以将缩进定为一个soft tab即4个空格,这样在所有环境下缩进都会保持一致。 1-2 …

php操作数据库的几种方式

PHP的MySQL扩展 设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程的接口; 并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可以与MySQL4.1.3或更新的数 ; 据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性。 PHP的mysqli扩展 mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MySQL4.1.3或更新版本中新的高级特性; mysqli扩展在PHP 5及以后版本中包含; mysqli扩展有一系列的优势,相对于mysql扩展的提升主要有:面向对象接口、 prepared语句支持、多语句执行支持、事务支持、增强的调试能力、嵌入式服务支持。 PHP数据对象(PDO) PHP数据对象,是PHP应用中的一个数据库 …

php用户输入过滤

作为PHP程序员,特别是新手,对于互联网的险恶总是知道的太少,对于外部的入侵有很多时候是素手无策的,他们根本不知道黑客是如何入侵的、提交入侵、上传漏洞、sql 注入、跨脚本攻击等等。 作为最基本的防范你需要注意你的外部提交,做好第一面安全机制处理防火墙。 规则 1:绝不要信任外部数据或输入 关于Web应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在PHP代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。 例如,下面的数据元素可以被认为是安全的,因为它 …

一道PHP面试题的思考

题目是这样的:写一个php函数,将’9123456789′,转话成’9,123,456,789’的形式。 解法1: function changeStr($str) { return number_format($str, 0, ‘,’, ‘,’); } 解法2: function changeStr($str) { return preg_replace(‘/\B(?=(\d{3})+$)/i’, ‘,’, $str); } 解法3: function changeStr($str) { return preg_replace(‘/\B(\d{3})/i’, ‘,$1′, $str); } 解法4: function changeStr($str) { $ret = ”; $len = strlen($str); $left = $len%3; for ($i=0; $i<$len; $i++) { if ($i%3 == $left && $i !==0) { $ret .=’,’; } $ret .= $str[$i]; } return $ret; } 除了php提供的number_format外,使用 …

PHP命名空间

1.为什么需要命名空间 在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题: 1.用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。 2.命名空间的三种用法 在说别名和导入之前,需要知道关于空间三种名称的术语,以及PHP是怎样解析它们的。官方文档说得非常好,我就直接拿来套了。 1.非限定名称,或不包含前缀的类名称,例如 $comment = new Comment();。如果当前命名空间是Blog\Article,Comment将被解析为Blog\Article\Comment。如果使用Comment的代码 …

PHP各版本主要ChangeList

一、PHP5.2以前(2006前) 顺便介绍一下 PHP5.2 已经出现但值得介绍的特征。 autoload 大家可能都知道 __autoload() 函数,如果定义了该函数,那么当在代码中使用一个未定义的类的时候,该函数就会被调用,你可以在该函数中加载相应的类实现文件,如: 复制代码 代码如下: function __autoload($classname) { require_once(“{$classname}.php”) } 但该函数已经不被建议使用,原因是一个项目中仅能有一个这样的 __autoload() 函数,因为 PHP 不允许函数重名。但当你使用一些类库的时候,难免会出现多个 autoload 函数的需要,于是 spl_autoload_register() 取而代之: 复制代码 代码如下: spl_autoload_register(function($cla …

php框架选型

为何使用框架 使用框架主要是在团队协作开发过程中统一开发规范、程序设计模式,遵循开发框架的各种约定,无论在编码还是以后的维护过程中都是易于管理的。另外就是框架会集成丰富的类库、函数库,也避免你的重复劳动,可以“随地取材”,提升开发的效率。作为新人,我们是不提倡学习框架的,尽量还是从PHP本身先学起,例如很多框架中都提供了ORM、CURD这类东西,但刚刚接触PHP的同学连PHP+MySQL都没有搞太清楚,直接选择框架式不可取的。 另外一些简单的应用也不必选择框架,例如一些小的工具或者功能,本身编写就不是很复杂,选择一套框架反而让你的程序变得臃肿。个人开发的时候也是根据情况而定,如果一些程序员本身就有一套开发思路 …