1.post和get的区别?
- url可见性:get方式url参数可见,post参数不可见
- 可缓存性:get方式可以缓存,post方式不可以缓存
- 传输数据大小:get方式一般传输数据不大于2k-4k,post请求传输的大小可以根据php.ini文件配置,也可以无限大
- 数据传输上:get方式通过url地址栏拼接参数传输,post通过body体传输.
2.在程序开发中,如何提高程序运行效率?
- 优化sql语句,查询语句中尽量不使用select * ,用到哪个字段查哪个字段,少用子查询可用链表查询
- 数据表中创建索引
- 对常用数据生成缓存
- 对mysql进行主从复制,读写分离
- 使用nigx做负载均衡
3.session与cookie的区别
- 存储位置:session存储在服务器,cookie存于浏览器
- 安全性:session相对于cookie安全
- session为“会话服务”,在使用时需要打开,cookie不需要开启,可以直接使用
4.php常用处理数组的函数
- array() 创建数组
- in_array() 元素是否在数组中
- array_keys() 获取数组中key列表
- array_values()获取数组中value值列表
- array_filter()剔除数组中的空值
5.什么是事务?及其特征?
事务是一系列的数据库操作,是数据库应用的基本逻辑单位
特征:
- 原子性。或者说不可分割性:事务要么全部执行,要么全部不被执行
- 一致性:事务的执行使数据库从一种正确的状态转换成另一种正确的状态
- 隔离性:在事务正确提交之前,不允许把该事务对数据的任何改变提供给其他事务
- 持久性:在事务正确提交后,其结果将永久保存在数据库中
6.索引是什么?索引有何作用?索引的优缺点?
索引是一种特殊的数据库查询表;作用是利用它来加速对数据的检索;索引可以是唯一的,创建索引可以是一个列或者是多个列。缺点是:减慢了数据录入的速度,同时也增加了数据库的尺寸大小
7.数据库类型有哪些?
MYISAM,InnDB
MYISAM:成熟,稳重,易管理,快速读取;但是不提供事务,表级锁。
InnDB:支持事务,外键等,空间占用大,但是不支持全文检索
8.堆和栈的区别?
堆:在程序运行期间进行内存动态分配,你可以根据程序运行的情况确定要分配的堆内存的大小 栈:在程序编译期间就要分配好的内存空间,因此你需要在代码中就栈的大小用明确的定义
9.说说mvc是什么?
MVC是一种架构模式,model是模型层处理数据,view视图层,展现交互界面,controller是控制器层处理业务逻辑 原理:
用户在视图层提交数据到控制器,控制器层调用模型层的方法进行数据处理,然后根据返回的结果控制器层再进行业务逻辑处理,最后返回到视图层。
10.redis和memecached的区别?
- 数据类型:redis支持丰富的数据类型,list,hash,string等,memecached仅支持简单 的key-value结构
- memecached的key-vaule存储比redis采用hash结构来做key-value存储的内存利用率更高
- redis支持事务,可以保证一系列命令的原子性
- redis数据持久化,可以将内存中的数据保存到磁盘
- redis只使用单核,memecached使用多核,所以每一个核上redis在存储小数据比memecached性能更高
11.redis是如何做到持久化的?
- RDB持久化,将redis内存中的状态保存到磁盘中,相当于备份数据库
- AOF持久化,通过保存redis服务器锁执行写的状态来记录数据库的,相当于备份数据库接收到的命令,所有被写入AOF的命令都是redis协议格式来保存的
12.为何php7比php5性能提升了两倍?
- 变量存储字节减少,减少了内存占用,提升变量操作速度
- 改善数组结构,数组元素和hash反映表被分配到同一块内存,降低内存占用,提升了cpu缓存命中率
- 改进了函数的调用机制,通过优化参数传递的环节,减少了一些指令,提高执行效率
13.composer是什么?工作原理是什么?
composer是一个依赖管理工具;原理是:将已经开发好的扩展包从packagist.org.composr仓库下载到我们的应用程序中,并声明依赖关系和版本控制
14.谈谈http的理解?
http是基于tcp协议上的,是应用层协议;
http的工作特点:
- 基于B/S模式
- 通信开销小,速度快,传输成本低
- 使用灵活,可使用超文本传输协议
- 无状态传输
http的工作原理:客户端发送请求给服务器,创建一个tcp链接,指定端口号,默认80,连接到服务器,服务器监听到浏览器请求,分析浏览器请求类型后,服务器会向客户端返回状态信息和数据内容
15.http和https的区别?
- http是超文本传输协议,信息是明文传输,https是具有安全性的ssl加密传输协议
- http和https使用完全不一样的连接方式,端口也不一样,http的默认端口为80
- http的无状态的协议,https有ssl+http构建的可进行加密传输,身份认证的网络协议