3. 什么是超全局变量?列举一些超全局变量。
4. 什么是魔术方法?列举一些常用的魔术方法。
5. 什么是PDO?如何连接数据库并执行查询操作?
6. PHP中如何防止SQL注入?
7. 什么是命名空间?如何定义和使用命名空间?
8. PHP中如何处理文件上传?
9. 什么是SPL?列举一些常用的SPL类。
10. 什么是Composer?如何使用Composer管理项目依赖?
11. 如何在PHP中实现会话管理?
12. 什么是会话固定攻击?如何防止会话固定攻击?
13. 什么是XSS攻击?如何防止XSS攻击?
14. 如何处理PHP中的错误和异常?
15. 什么是自动加载?如何使用自动加载机制?
16. 什么是单例模式?如何实现一个单例类?
17. 什么是MVC模式?如何在PHP中实现MVC模式?
18. 什么是RESTful API?如何设计和实现一个RESTful API?
19. 如何使用PHP发送电子邮件?
20. 什么是PHP的垃圾回收机制?如何手动释放内存?
这些问题涵盖了PHP的基础知识、安全性、性能优化、设计模式等方面,可以帮助面试者评估候选人对PHP的掌握程度和实际应用能力。
HTTP状态码
状态码 | 英文名称 | 中文描述 |
---|---|---|
500 | 服务器内部错误 | 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,服务器端的源代码出现错误。 |
501 | 方法未实现 | 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。 |
502 | 错误网关 | 错误网关,无效网关; |
503 | 服务暂时不可用 | 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。 |
504 | 网关超时 | |
505 | http版本不支持 | 服务器不支持客户端发送的http请求中所使用的http协议版本。 |
301 | 是指永久性的移动,302是暂时性的,即以后还可能有变化。 | |
302 | 表示临时性重定向。访问一个Url时,被重定向到另一个url上,常用于页面跳转。 | |
400 | 错误请求 | 因发送的请求中存在语法错误,服务器无法正常读取 |
401 | 未授权 | 需要验证身份后才能获取所要访问的内容 |
403 | 禁止访问 | 表示对请求资源的访问被服务器拒绝 |
404 | 找不到请求的资源 | |
405 | 不允许使用该方法 | 该请求中使用的方法被服务器端禁止使用,RFC2616中规定,get和head方法不能被禁止。 |
php 命名空间的作用
-
用于解决在PHP库中因为具有相同名称的类和方法而发生冲突的问题。
添加了命名空间后就不必担心代码冲突问题。 -
命名空间一个最明确的目的就是解决重名问题,
-
PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。
这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。
谈一谈restful api设计
-
要使用https通信协议。
-
尽量将api部署到专用域名之下,例如:https://api.kegog.com/
,如果确定api很简单,不会有进一步的扩展,可以考虑放在主域名之下,例如:
https://www.kegog.com/api -
应该将api的版本号放入url,例如:https://api.kegog.com/v1/
-
路径:每个网址代表一种资源,所以网址中不能有动词,只能有名词,而且所用的名词往往与
数据库的表格名相对应。并且使用复数形式。
例如:https://api.kegog.com/v1/zoos
https://api.kegog.com/v1/animals -
http动词,常用的http动词有5个,
get(select)
post(create)
put(update):更新全部信息
patch(update):更新部分信息
delete (delete) -
分页
?limit=10;指返回记录的数量 -
状态码【status codes】
201:(post/put/patch)用户新建或修改数据成功
202:(表示一个请求已经进入后台排队,异步任务)
204:(delete)用户删除数据成功
400:(post/put/patch)用户发出的请求有错误,服务器无法正常读取。
401: 表示用户没有权限(令牌,用户名,密码错误)
描述一下php开发中常见的几种攻击以及解决方案?
-
防止SQL注入,使用php内置的函数 mysql_real_escape_string() 过滤参数。
-
防止用户操纵变量。例如:test.php?uid=100,
使用php函数is_numeric() 判断输入的是不是数字
使用php函数strlen() 检查变量的长度。
还可以使用正则表达式过滤。 -
缓冲区溢出攻击。使用正则表达式和strlen()函数确保用户提交的数据不会使内存缓冲区溢出。
-
跨站点脚本攻击(XSS)
使用strip_tags()函数,htmlspecialchars()函数,过滤 -
跨站点请求伪造(CSRF)
业界推崇这个方法。在请求中提添加一个token字段,如:www.hao123.com?name=abc&age=123&token=[random(seed)];token为客户端和浏览器的秘密,其他人不知道。一般要保证token的保密性和随机性。 -
浏览器数据操纵。
-
远程表单提交,使用唯一令牌阻止
区分一下xss、csrf、ssrf
- 跨站点脚本攻击(XSS)
- 跨站点请求伪造(CSRF)
- 服务器端请求伪造(ssrf)
以下语句输出的结果是什么?
$a = 3;
echo "$a",'$a',"\\\$a","${a}","$a"."$a","$a"+"$a";
以下语句输出的结果是什么?
setcookie(“a”,“value”);
print $_COOKIE[‘a’];
php中将当前页面重定向到另一个页面怎么写?
什么是魔术引号(magic_quotes_gpc)?
在类的方法中,如何调用其父类的同名方法?
php中如何取得get,post参数,和上传的文件?
如何取得客户端的ip(要求取得一个int)?
include 和 require 的区别?
请问php中echo 和 print 有什么区别?
下列不属于php注释的是(C)
A、//
B、#
C、<!-- -->
D、/* */
下列表达式中能够成立的是(A)
A、2000 == ‘2000’
B、2000 === ‘2000’
C、2000 != ‘2000’
D、2000 !== ‘2000’
下列代码执行后的结果是(1111)
<?php
function fun($a){
$result = $a * $a;
echo "1";
return $result;
}
echo fun(1),fun(1);
?>
请写出一个方法计算出给定任意日期的前N天的日期
echo count(“xiaofeibao”);等于多少?
列举下优化mysql数据库的方法?
写出发帖数最多的十个人名字的SQL,利用下表:
member(id,username,posts,pass,email)
select id,username from members order by posts desc limit 10;
js弹出对话框函数有?获得输入焦点函数是?
alert() confirm() promopt() focus()
请简述对一千万个中国居民身份证号码去重的方案,场景可自行假设。
假定有一个表T,数据记录有1000w条,有以下字段,自增主键ID,用户身份证号码18位的id_num字段,如果假设头6位可以确定一个城市,第17位如果奇数代表男性,偶数代表女性,请帮忙统计下有几个城市,每个城市有几个男性,有几个女性。
php如何输出反斜杠()转义字符。
<?php
header("Content-Type:text/html; charset=UTF-8");
$str = "php 输出反斜杠 \\";
//输出结果: "php 输出反斜杠 \"
echo $str;
简述private、protected、public修饰符的访问权限。
- private:私有成员,在类的内部才可以访问。
- protected:受保护的成员,该类内部和继承类中可以被访问。
- public:公共成员,完全公开,没有访问限制。
封装一个函数,将字符串“hello_world”转换成“HelloWorld”
function get_str($str){
$arr = explode('_',$str);
$new_str = "";
foreach($arr as $val){
//$new_str .= ucwords($val);
$new_str .= ucfirst($val);
}
return $new_str;
}
说说下面几种状态码代表什么?
- 200:请求成功,成功响应。
- 301:永久性移动。
- 302:表示临时性重定向,常用于页面跳转。
- 404:服务器找不到所请求的资源。
- 500:服务器内部错误。
封装一个函数求3个值的最大值。
$arr = array(4,6,3);
echo max($arr);