ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **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系统对接经验等;