应届生最新PHP面试题(2)

版权声明:让我们一起享受这神奇的0和1吧 https://blog.csdn.net/eebaicai/article/details/84202442
  1. 用php获取当前时间并打印,打印格式:2018-5-10 09:21:21
//注意这里的5不是05
//区别m和n,d和j
echo date('Y-n-d H:i:s');
  1. 如何把字符串’08/26/2018’替换成’2018-08-26’
$date = '08/26/2018';
$partern = '/(\d+)\/(\d+)\/(\d+)/';
echo preg_replace($partern,'$3-$1-$2',$date);
  1. 简述一下表的索引

索引,降低扫描行数,提高表的查询速度,最为重要的优化手段
主要分主键索引 唯一索引 普通索引

  1. 无限分类的实现原理

无限分类,一个表存放有关系的多级分类,之间有层级关系
实现通过表中的pid字段,然后递归,把查询到的有关系的数据放到一个数组中
有时候加多一个path字段,表示顶级分类到当前分类的分类地图,用作url路径

  1. 尽可能高效的,从匹配标准url里取出文件的扩展名
$arr = parse_url($url);
$arr1 = pathinfo($arr['[path]']);
echo $arr1['extension'];
  1. 描述大流量高并发网站的解决方案

在这里插入图片描述

  1. 如何设计或者配置mysql,使其高效使用

mysql服务器主从复制
表分区
表引擎,数据量小尽量选择myisam
索引优化

  1. 如何防sql注入

表单尽量用post提交
使用http_referer检查来源
使用addslashes对特殊字符进行转义
使用htmlspecialchars进行实体转换

  1. 如何写一个安全的用户登录系统

表单post提交
限制错误登录次数
使用验证码,防止机器破解(google的,短信类的这些更安全)
同时做前端和后端的表单认证

10.session与cookie的区别,从协议和产生的原因与作用说明

http协议是无状态,无连接的,不能区分用户是否是从同一个网站过来的
而且网站需要保存登录态和一些使用记录
所有用到会话机制session和cookie
session依赖于cookie.
session是保存在服务器中的,cookie是在服务器产生,保存在客户端中的,所以cookie会有延迟
考虑到安全方面,使用session,考虑到减轻服务器性能的,使用cookie.

  1. 表单中 get与post提交方法的区别?

get请求发送数据是通过url参数传递的,会明文显示,浏览器限制了get请求发送数据的大小是2KB
post请求发送的数据放在request body中,数据大小默认是无限制的
post比get安全,get比post效率高
get可以被缓存,保留历史记录,收藏为书签 post不行

更深入的说:
get发送一个tcp数据包,post发送两个tcp数据包
get.post都是tpc链接,由于http协议的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同.

  1. 语句include和require的区别是什么?

include和require在如何处理失败上是不同的:
include在引入不存在的文件时会产生一个警告,脚本继续执行
require却会导致一个致命的错误,终止脚本运行
require在php预处理阶段就执行了,而include是在执行到include语句的时候才引入
require是不受条件语句影响的

  1. 请说明php中传值与传引用的区别。

本质就是zval结构体中的recount_gc和is_ref_gc的影响

传值:函数内对值的改变都不会影响函数外部的
传引用:函数内外的变量的值一起被影响

14.echo(),print(),print_r()的区别?

echo语言结构,无返回值,可以一次输出多个值
print语言结构,有返回值true或者false,只能输出一个值
print_r 递归打印,可以输出数据和对象,当第二个参数是ture是直接返回不输出

语言结构:php语法组成部分的函数
echo print list array eval

  1. mvc优势

耦合性低
重用性高
可维护性高
有利于软件工程化

猜你喜欢

转载自blog.csdn.net/eebaicai/article/details/84202442