## **1. 什么事面向对象?主要特征是什么**
面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。
## **2. isset() 和 empty() 区别**
isset判断变量是否存在,可以传入多个变量,若其中一个变量不存在则返回假;empty判断变量是否为空为假,只可传一个变量,如果为空为假则返回真。
## **3. foo()和@foo()之间有什么区别?**
@代表所有warning忽略
## **4. PHP 如何定义变量, 两个变量定义符 $$ 是什么意思**
$ 定义变量 ;$$ 直接使用引用变量
## **5. 语句include和require的区别是什么?为避免多次包含同一文件,可用什么语句代替它们?**
区别:在失败的时候:include产生一个warning,而require产生直接产生错误中断require在运行前载入include在运行时载入代替:require\_onceinclude\_once
## **6. echo、print\_r、print、var\_dump区别**
echo:语句结构;print:是函数,有返回值print\_r:能打印数组,对象var\_dump:能打印对象数组,并且带数据类型
## **7. $this和self、parent这三个关键词分别代表什么?在哪些场合下使用?**
$this 当前对象self 当前类parent 当前类的父类
$this在当前类中使用,使用->调用属性和方法self也在当前类中使用,不过需要使用::调用parent在类中使用
## **8. 作用域操作符::如何使用?都在哪些场合下使用?**
调用类常量调用静态方法
## **9. 简述常用字符串函数。**
~~~php
serialize()、unserialize() 序列化是将变量转换为可保存或传输的字符串的过程。
strlen() 返回字符串长度。
strrev() 反转字符串。
strpos(原字符串,待查找字符串) 存在返回第一个字符下标,不存在返回false。
strstr(原字符串,待查找字符串) 返回待查找字符串及其后剩余部分,不存在返回false。
str_replace("world", "Kitty", "Hello world!") 将某个字符串替换为另一个字符串。
explode(" ",原字符串) 将原字符串按分割字符串转成数组。
implode(" ",原数组) 将原数组中的元素连接分割字符组合成字符串。
trim() 移除字符串两侧的空白字符和其他字符。ltrim()移除左边、rtrim()移除右边。
substr("Hello world",6) 返回字符串的一部分。
substr_replace(string,replacement,start,length) 函数把字符串的一部分替换为另一个字符串。
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。
str_repeat("Shanghai",5) 字符串重复指定次数。
str_split("Shanghai",3) 将字符串分割成数组,可以指定每个数组元素长度。
~~~
## **10. 简述常用数组函数**
~~~php
array_keys() 返回数组中所有的键名。
array_values() 返回数组中所有的值。
array_shift() 删除数组中首个元素,并返回被删除元素的值。
array_unshift() 在数组开头插入一个或多个元素,并返回数组元素个数。
array_diff() 比较数组,返回差集(只比较键值)。
array_intersect() 比较数组,返回交集(只比较键值)。
array_diff_assoc() 比较数组,返回差集(比较键名和键值)。
array_merge() 把一个或多个数组合并为一个数组。
array_pop() 删除数组的最后一个元素(出栈)。
array_push() 将一个或多个元素插入数组的末尾(入栈)。
sort() 对数组进行升序排序。
rsort() 对数组进行降序(逆向)排序。
asort() 对关联数组按照键值进行升序排序。
ksort() 对数组按照键名进行升序排序。
array_rand() 返回数组中一个或多个随机的键。
array_combine() 通过合并两个数组来创建一个新数组。
array_unique() 删除数组中的重复值。
~~~
## **11. SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?**
A、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。B、SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。禁用cookie后,session不能正常使用。Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save\_path指定。Session文件是公有的。
## **12. MyISAM和 InnoDB 的基本区别?索引结构如何实现 ?**
A、MyISAM类型不支持事务,表锁,易产生碎片,要经常优化,读写速度较快,适合用于频繁查询的应用;B、InnoDB类型支持事务,行锁,有崩溃恢复能力,读写速度比MyISAM慢,适合于插入和更新操作比较多的应用,空间占用大,不支持全文索引等。创建索引:alert table tablename add index 索引名 (`字段名`)
## **13. 数据库事务是什么?**
是用户定义的一个数据库操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
## **14.产生死锁的条件**
1.互斥条件:一个资源每次只能被一个进程使用。
2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
## **15. MVC各个部分是由什么实现?怎样实现?**
~~~
~~~
## **16. 请简单写一个ajax事件。**
~~~
~~~
## **17. 怎样用一个7升的瓶子和一个5升的瓶子准确的量出6升水?**
## 要求
以下为PHP系统中运用的技术相关的信息内容:
1. PHP版本使用情况:
现主要使用的PHP版本为5.2, 少数业务处理使用的PHP7, 需熟悉在PHP5.2下,一些开发的限制;
2. PHP使用框架情况:
现主要使用的PHP框架为自主封装的框架,类TP3.2版本,MVC结构, 少数业务使用workerman框架, TP5框架;
3. 前端使用情况:
现主要是用的前端框架包括jquery,easyui,jqgrid, 另外需要熟悉一些常用的组件,包括树形组件, 下拉组件, tab组件, 验证组件等等;
4. 数据库情况:
主要使用的是mysql数据库, 需了解 mysql中关于索引问题, 锁表问题, 分表问题, 优化查询等;
5. 代码维护情况:
现主要使用svn作为中控管理, 另需能使用git;
6. 另外需要具备的一些技能:
部署项目,包括apache安装部署, php配置处理, 文件差异对比处理, 接口开发规范, ERP系统对接经验等;