php面试题-1

1、php基础部分

php的一大优势是跨平台性,什么是跨平台?

答案:

  php的最佳运行环境为apache、mysql 、php这里不受操作系统现在因此 为跨平台

2、数据传输有哪些方式?

get和post

区别:

缓存性 get可以缓存 post不可以

数据传输大小 get一般为2到4k (还受到浏览器的影响但想差不到) post 根据php.ini中的配置限制 也可以无限大

数据传输方式get通过url  post通过body

可见性 get在地址栏上可以看到 post无法观察

安全性 建议使用post传输安全隐蔽的数据

做数据查询建议用Get式;做数据添加、修改或删除建议用Post方式;

3、学习和掌握的框架和模板引擎和系统有哪些?

比如yii tp laravel ci 等等 框架 smarty引擎 ecshop  phpCMS等等

4、掌握哪些前端技术?

html、css、javascript、jquery、bootstrap等等

5、Ajax的优势?

异步传输数据、使用javascript或者jquery实现局部刷新,减轻服务端的压力,提高用户体验

6、程序开发过程当中应该注意哪些安全问题?

使用验证码防止注册机大量灌水

使用token令牌防止远程登录和验证登录状态

使用mysql的语句预处理防止sql注入

7、如何提高程序运行速度?

优化SQL语句 避免使用select * 这样的语句应该明确要查询的字段  使用表连接查询代替子查询、不使用模糊查询

创建索引

经常使用的数据应该生成缓存可以使用redis 或者ob实现静态化页面

mysql主从复制 读写分离

nginx 负载均衡  将压力分布在多个服务器上面

8、php能否和其他数据库搭配?

可以、不过mysql是最佳选择

9、什么是MVC 有什么优点?

M 业务模型  V视图模型  C控制器模型

由控制器调用model实现业务逻辑 并将数据映射在视图层

优点:读写代码分离、降低数据冗余度

9、json的理解

json(javascript  Object notation) 这是一种轻量级的数据交换格式 适用于多种编程语言的数据交换

利用json_decode将字符串型的json数据转换成php数组

使用json_encode将数组转换成json数据类型

10、echo print print_r 的区别

前面的echo 是数据结构 不是函数没有返回值 效率高

print 有返回值 并且多用于字符串的但因

print_r有返回值 打印符合数据类型 如数组 对象 方法等等

11、session 和cookie 的区别

存储位置:前者在服务器上面、后者在浏览器上面

安全性:session比较安全

session需要开启会话服务 cookie不需要

数组操作函数

//创建数组
$a = array(
    "a"=>1,
    "b"=>12,
    "age"=>31,
    "a"=>22
);
$b = array(
    "age"=>1
);
$c = array(
    1,
    "age"=>12
);
//比较多个数组值的差异 返回$a中存在 但后边元素集合中不存在的值
print_r(array_diff($a,$b,$c)); 
//返回数组的交集
print_r(array_intersect($a,$b,$c));
//返回数组的键的集合
print_r(array_keys($a));
//返回数组的值的集合
print_r(array_values($a));
//去除重复的键 在原来的数组上改变 而且返回值为操作的数组
print_r(array_unique($a));

//添加多个元素 进栈
array_push($a,1,2);
//出栈
array_pop($a);//只能出栈一个元素 只能传递数组出栈最后一个元素
print_r($a);
echo "<meta charset=utf8>";
$sum = array(1,2,3,4,5);
function sum($value,$key,$p){
    //$sum[$key]+=1;
    echo $key;
    echo $value;
    echo $p;
}
array_walk($sum,"sum","这是一个参数");
print_r($sum);//对数组中的每个元素都做回调处理

php处理字符串的常见函数重点关注参数和返回值

 剔除字符

/*第二个参数为空时 默认 	 
 x0B 
 都会被剔除*/
$str = " hello world asd
";
$html = "   hehe";
echo trim($str).$html."<br>";
echo trim($str).trim($html);
echo trim($str," hed
");//第二个参数只能是字符串的开头或者结尾开始匹配并且剔除不能直接从中间开始 还有ltrim rtrim

字符串长度

/*第二个参数为空时 默认 	 
 x0B 
 都会被剔除*/
$str = " hello world asd
";
echo strlen($str);
/*

在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14 
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算

mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保

“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。
 */
echo mb_strlen("我是中国人",'UTF8');

subStr函数

echo "<br>".substr("I am your father!!!",2,2);//substr(string,start,length)从第2个开始截取两位 应该为am

str_replace 

$test = "I am your father";
echo str_replace("father","mother",$test);//将father替换成mother

 str_repeat和is_string

echo str_repeat("-",10);//重复字符串
$a = 1;
print(is_string("asdf"));//判断是否为字符串

打乱字符串 str_shuffle

sprintf返回格式化后的字符串

$txt = sprintf("%s 每天有 %u 万人在访问!", $str, $number);

strstr()//查看某字符创首次出现的位置  返回该字符串及后面剩余部分:

echo addslashes("<p style='coor:red'>sdf</p>hello"); 给引号加斜杠

原文地址:https://www.cnblogs.com/webcyh/p/11440417.html