欢迎光临
感谢一路有你

PHP面试题(一)

如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
 

 

<?php
// 1
date_default_timezone_set("PRC");
echo date('Y-n-d H:i:s');//2018-3-04 10:57:29
echo "<br>";
echo date('Y-m-d H:i:s');//2018-03-04 10:58:30
echo "<br>";
// echo date('Y-m-d h:i:s');
echo "<br>";

// 2
//字符串转数组	str_split(string)	explode(delimiter, string)
//数组转字符串	implode(glue, pieces)
//字符串截取	substr(string, start)	mb_substr(str, start)
//字符串替换	str_replace(search, replace, subject)	preg_replace(pattern, replacement, subject)正则替换
//字符串查找	第一个strpos(haystack, needle)	最后一个strrpos(haystack, needle)	preg_match(pattern, subject)	preg_match_all(pattern, subject, matches)

// 截取路径中的文件部分/路径部分
$str = 'www/a/index.html';
echo strrpos($str, '/');//5
echo "<br>";
echo substr($str, strrpos($str, '/')+1);//index.html
//路径部分
echo "<br>";
echo substr($str, 0,strrpos($str, '/'));//www/a

echo basename($str);//文件名
echo dirname($str);//目录


// 3.解释
/*
protected 受保护的
用来修饰类的属性和方法,展现了类3大特性中的封装特性
本类,子类可使用,外部不能使用

public 公有的
都能使用

private 私有的
只有本类能使用


interface 接口
抽象到极限就是借口
只含有抽象方法


abstract 抽象类
含有任意一个抽象方法的类
没有方法体{}的方法叫抽象方法



final 最后的类和方法
不能修饰属性
最后一个版本,不能再有子类


static  静态方法和属性
不能修饰类
属于类但并不依附于对象
类名::方法名 -------不用再new了


*/

// 4.'08/26/2017'转换成 2017/08/26
echo "<br>";
$date='08/26/2017';  
echo preg_replace('/(\d+)\/(\d+)\/(\d+)/', '$3/$1/$2', $date);//2017/08/26
// echo preg_replace('/(\d+)\/(\d+)\/(\d+)/', '${3}/${1}/${2}', $date);//2017/08/26
echo "<br>";


//5
// login表中包含admin字段的前10条结果
$sql= "select * from login where name like '%admin%' limit 10 order by id";


//6解释
/*
左连接left join(常用)
关键词left join 适用于多表查询
以左表为主导,全部查出来,对应右边的,没有的则null


右连接right join
以右表为主导

内连接inner join
直接查找,不关联的则不查,类似于普通多表查询,只查找相关的
select * form user inner mas on user.id=mas.user_id


索引index
加入索引,提高检索速度,查找速度快
常见的有3种
主键索引,一个表一般只有一个主键索引,一般用于id
唯一索引,每一列都可以有唯一索引,可用于id,一般不用(一旦用了,值不能重复,否则报错)
普通索引,每一列都可以有普通索引
alert table t1 add index in_name
alert table t1 drop index in_name

如果不添加索引,有多少行,查找多少行,直至找到,影响行数为n
使用索引,影响行数为1



数据库优化第一点就是索引优化

*/


//7
// 无限分类原理
/*
id name  pid path

通过pid找到他的父类
*/

//8
// 高效的从url中取出文件扩展名
// https://www.wangmingchang.com/a/ab/dsf/我是网页2321.php

$str= 'https://www.wangmingchang.com/a/ab/dsf/我是网页2321.php';
echo "<br>";


// echo substr(basename($str), strrpos(basename($str), '.'));//.php

// var_dump(pathinfo($str));
// 输出如下:
// { 
// 	["dirname"]=> string(38) "https://www.wangmingchang.com/a/ab/dsf" 
// 	["basename"]=> string(20) "我是网页2321.php" 
// 	["extension"]=> string(3) "php" 
// 	["filename"]=> string(16) "我是网页2321" 
// } 

$a = parse_url($str);
// var_dump($a);
//输出如下
// { 
// 	["scheme"]=> string(5) "https" 
// 	["host"]=> string(21) "www.wangmingchang.com" 
// 	["path"]=> string(30) "/a/ab/dsf/我是网页2321.php" 
// } 
$b = $a['path'];
echo "<br>";
var_dump(pathinfo($b));


// parse_url(url);   用于url
//pathinfo()		用于文件


echo "<br>";


//9
// 解释mvc

// 开发模型,实现mvc分离,尤其是视图层与逻辑层的分离

// m  数据模型,对数据库进行增删改查
// v  视图层,
// c  控制器,逻辑的


//10
// 大流量高并发网站的解决方案(省略)

//大流量带来高并发

// 每秒2万,高并发,,1天17.2亿流量
//web服务器的事
/*
1台服务器
阿帕奇---3000到4000


多台服务器使用 ---负载均衡(多个服务器平均分担流量)

集群是为了,你挂了我上

服务器优化技术
第一 可以设置dns负载均衡,分流到各个服务器中
第二 负载均衡器(lvs)
第三 集群服务器
第四 web服务器要采用nginx   可同时顶住2万
第五 静态缓存  (PHP源代码转成html)
第六 数据缓存	(tp转换成文件缓存,memcache内存,redis内存)
第七 内存数据缓存(memcache内存,redis内存)
第八 数据库 (索引)
第九 磁盘阵列技术

*/


//12防sql注入
/*
防sql注入
表单尽量用post,表单判断控制用get  
get快但不安全,有大小限制1k左右
$_SERVER[HTTP_REFERER]判断提交者源头
pdo中加入预处理
密码md5加密
sql语句
开启addslashe, (values中,特殊符号带反斜杠转义)
	insert into t1('name','title')values('dasdsa','sdsadsads')



防盗链
1>服务器上防止
利用web服务的中的rewrite重写功能阻止盗链
2>代码防止
$_SERVER[HTTP_REFERER]

*/


//13
// PHP写一个安全的用户登录系统注意哪些方面
/*
域名要使用https
post提交
验证码
限制登录错误次数
密码不能ctrl+v(防止快捷键)
u盾
手机验证

*/



//14 PHP框架,及功能特点
/*
yii框架	大型项目
Zend  大型项目  官方产品


CI 	快速开发框架,功能需要自己写,非完全模版PHP分离
tp
larval

tp功能丰富,

*/


//15
// 使用过那些版本控制器
/*
svn
适合团队开发
功能少


git

*/




 

赞(1) 打赏
未经允许不得转载:王明昌博客 » PHP面试题(一)
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏