PHP面试题大全(值得收藏)
在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章、图集、软件、商品、分类信息、专题。通过系统自带的模型,我们可以用来构建不同类型的站点,例如:使用图集可以做一个图片站,用软件模型构建一个软件下载站点。 当然以上随系统附带的模型被称为系统模型,用户可以自己定义一些模型,比如图书、音乐专辑等,自定义了这些模型才可以构建更多内容形式的站点。 相当于我们自动添加了表结构,适应现在当前需求的变化 10、dede中概念,设计和使用模板,必须要理解下面几个概念 (1)板块(封面)模板: 指网站主页或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引擎去解析后才输出内容或生成特定的文件。 (2)列表模板: 指网站某个栏目的所有文章列表的模板,一般用 “list_识别ID.htm” 命名。 (3) 档案模板: 表示文档查看页的模板,如文章模板,一般用 “article_识别ID.htm” 命名。 (4) 其它模板: 一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定义一个模板创建为任意文件。 11、dede中几种标签的使用? 列表 内容 等标签 只能在其本范围内使用,列表标签只能在列表中使用,内容标签只能在内容标签中使用。 全局标签能在所有页面中使用 12、熟悉常用类库 (例如:dedesql.class.php);熟悉系统函数库(common.func.php);熟悉自定义函数库(extend.func.php);熟悉前台入口文件(common.inc.php) 七、微信公众平台开发 1、微信运行机制 公众号与php之间用什么语言通信:Xml Weixin.php中是如何接收公众号数据的: 2、消息类型 微信目前提供了7种基本消息类型,分别为: (1)文本消息(text); (2)图片消息(image); (3)语音(voice) (4)视频(video) (5)地理位置(location); (6)链接消息(link); (7)事件推送(event) 类型。掌握不同的消息类型发送时的数据传递格式 3、将整个文件读入一个字符串的函数是 File_get_contents 4、常用函数 把xml数据解析成对象的函数是 simplexml_load_string( ) 将字符串转换为数组的函数是___ explode_________,将数组转化为字符串的函数是____implode________. 编码 URL 字符串的字符串是____urlencode________. 5、Sprintf函数的作用 这个都是可以查手册的。 6、微信公众号出现无法提供服务的原因? (1)网络原因 ,数据接口原因 (2)代码错误,怎么推测原因 修改的哪里检查一下,如果代码没错 可以输出数据 看一下。用php操作文件 7、自定义菜单的事件推送 单击 单击跳转链接 扫码推事件 扫码推且弹出 弹出系统拍照发图的事件 弹出微信相册发图器的事件 弹出地理位置选择器的事件 8、token的作用 安全机制验证,用于微信服务器与PHP服务器之间的安全验证 9、Appid与secrect的作用 请求api接口(例如菜单的操作)时需要传appid与secrect两个值,用来获取应用的授权码 laravle面试题 PHP7 和 PHP5 的区别,具体多了哪些新特性? 性能提升了两倍 结合比较运算符 (<=>) 标量类型声明 返回类型声明 try…catch 增加多条件判断,更多 Error 错误可以进行异常处理 匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义 …… 了解更多查看文章底部链接 PHP7 新特性 为什么 PHP7 比 PHP5 性能提升了? 变量存储字节减小,减少内存占用,提升变量操作速度 改善数组结构,数组元素和 hash 映射表被分配在同一块内存里,降低了内存占用、提升了 cpu 缓存命中率 改进了函数的调用机制,通过优化参数传递的环节,减少了一些指令,提高执行效率 laravel 模块 服务提供者是什么? 服务提供者是所有 Laravel 应用程序引导启动的中心,Laravel 的核心服务器、注册服务容器绑定、事件监听、中间件、路由注册以及我们的应用程序都是由服务提供者引导启动的。 IoC 容器是什么? IoC(Inversion of Control)译为 「控制反转」,也被叫做「依赖注入」(DI)。什么是「控制反转」?对象 A 功能依赖于对象 B,但是控制权由对象 A 来控制,控制权被颠倒,所以叫做「控制反转」,而「依赖注入」是实现 IoC 的方法,就是由 IoC 容器在运行期间,动态地将某种依赖关系注入到对象之中。 其作用简单来讲就是利用依赖关系注入的方式,把复杂的应用程序分解为互相合作的对象,从而降低解决问题的复杂度,实现应用程序代码的低耦合、高扩展。 Laravel 中的服务容器是用于管理类的依赖和执行依赖注入的工具。 Facades 是什么? Facades(一种设计模式,通常翻译为外观模式)提供了一个”static”(静态)接口去访问注册到 IoC 容器中的类。提供了简单、易记的语法,而无需记住必须手动注入或配置的长长的类名。此外,由于对 PHP 动态方法的独特用法,也使测试起来非常容易。 Contract 是什么? Contract(契约)是 laravel 定义框架提供的核心服务的接口。Contract 和 Facades 并没有本质意义上的区别,其作用就是使接口低耦合、更简单。 依赖注入的原理? 这个就不解释了吧,这是理解 IoC 容器的前提。 什么是 Composer, 工作原理是什么? Composer 是 PHP 的一个依赖管理工具。工作原理就是将已开发好的扩展包从 packagist.org composer 仓库下载到我们的应用程序中,并声明依赖关系和版本控制。 缓存 Redis、Memecached 这两者有什么区别? Redis 支持更加丰富的数据存储类型,String、Hash、List、Set 和 Sorted Set。Memcached 仅支持简单的 key-value 结构。 Memcached key-value存储比 Redis 采用 hash 结构来做 key-value 存储的内存利用率更高。 Redis 提供了事务的功能,可以保证一系列命令的原子性 Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中 Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Memcached 性能更高。 Redis 如何实现持久化? RDB 持久化,将 redis 在内存中的的状态保存到硬盘中,相当于备份数据库状态。 AOF 持久化(Append-Only-File),AOF 持久化是通过保存 Redis 服务器锁执行的写状态来记录数据库的。相当于备份数据库接收到的命令,所有被写入 AOF 的命令都是以 redis 的协议格式来保存的。 数据库 什么是索引,作用是什么?常见索引类型有那些?Mysql 建立索引的原则? 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针,相当于书本的目录。其作用就是加快数据的检索效率。常见索引类型有主键、唯一索引、复合索引、全文索引。 索引创建的原则 最左前缀原理 选择区分度高的列作为索引 尽量的扩展索引,不要新建索引 高并发如何处理? 使用缓存 优化数据库,提升数据库使用效率 负载均衡 PHP 的设计模式就不多讲了,但是 SOLID 设计原则是每一位 PHPer 都必须要掌握的。 一 、PHP基础部分 1、PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows、Linux等)上配置,不受操作系统的限制,所以叫跨平台 2、WEB开发中数据提交方式有几种?有什么区别?百度使用哪种方式? Get与post两种方式 区别: (1)url可见性:get 方式url参数可见,post 不可见 (2)可缓存性:get 方式是可以缓存的,post 方式不可以缓存。 (3)传输数据大小:get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大);post 请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。 (4)数据传输上:get 方式通过url地址栏拼接参数进行传输,post 方式通过body体进行传输。 建议: 1、get式安全性较Post式要差些包含机密信息建议用Post数据提交式; 2、做数据查询建议用Get式;做数据添加、修改或删除建议用Post方式; 百度使用的get方式,因为可以从它的URL中看出 3、掌握PHP的哪些框架、模板引擎、系统等 框架:框架有很多,例如CI、Yii、Laravel等等,咱们学过的是thinkphp 模板引擎:也有很多,在课本中有,咱们学过的是smarty 系统:有很多,例如:康盛的产品(uchome、supesite、discuzX等),帝国系统、DEDE(织梦)、ecshop等,咱们学过的是DEDECMS、Ecshop 4、说一下你所掌握的网页前端技术有哪些? 熟练掌握DIV+CSS网页布局,JavaScript,jQuery框架、photoshop图片处理 5、AJAX的优势是什么? ajax是异步传输技术,可以通过javascript实现,也可以通过JQuery框架实现,实现局部刷新,减轻了服务器的压力,也提高了用户体验。 6、安全对一套程序来说至关重要,请说说在开发中应该注意哪些安全机制? (1)使用验证码防止注册机灌水。 (2)使用预处理,绑定参数,参数过滤转义 防止sql注入 (3)使用token防止远程提交,使用token验证登录状态。 7、在程序的开发中,如何提高程序的运行效率? (1)优化SQL语句,查询语句中尽量不使用select *,用哪个字段查哪个字段;少用子查询可用表连接代替;少用模糊查询。 (2)数据表中创建索引。 (3)对程序中经常用到的数据生成缓存(比如使用redis缓存数据,比如使用ob进行动态页面静态化等等)。 (4)对mysql做主从复制,读写分离。(提高mysq执行效率和查询速度) (5)使用nginx做负载均衡。(将访问压力平均分配到多态服务器) 8、PHP可否与其它的数据库搭配使用? PHP与MYSQL数据库是最优搭配,当然PHP也可以去其它的数据库搭配使用,例如PostgreSql,SqlServer,Oracle,SqlLite等。 9、现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点? MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示。 优点是:①可以实现代码的重用性,避免产生代码冗余;②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式 10、对json数据格式的理解? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,json数据格式固定,可以被多种语言用作数据的传递。 PHP中处理json格式的函数为json_decode( string $json [,它们包含着对数据表里所有记录的引用指针,相当于书本的目录。其作用就是加快数据的检索效率。常见索引类型有主键、唯一索引、复合索引、全文索引。 索引创建的原则 最左前缀原理 选择区分度高的列作为索引 尽量的扩展索引,不要新建索引 高并发如何处理? 使用缓存 优化数据库,提升数据库使用效率 负载均衡 PHP 的设计模式就不多讲了,但是 SOLID 设计原则是每一位 PHPer 都必须要掌握的。 (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |