程序员面试题之什么是XSS攻击?如何防止XSS攻击?什么是自动加载?如何使用自动加载机制?如何设计和实现一个RESTful API?什么是PHP的垃圾回收机制?如何手动释放内存?

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网关超时
505http版本不支持服务器不支持客户端发送的http请求中所使用的http协议版本。
301是指永久性的移动,302是暂时性的,即以后还可能有变化。
302表示临时性重定向。访问一个Url时,被重定向到另一个url上,常用于页面跳转。
400错误请求因发送的请求中存在语法错误,服务器无法正常读取
401未授权需要验证身份后才能获取所要访问的内容
403禁止访问表示对请求资源的访问被服务器拒绝
404找不到请求的资源
405不允许使用该方法该请求中使用的方法被服务器端禁止使用,RFC2616中规定,get和head方法不能被禁止。

php 命名空间的作用

  1. 用于解决在PHP库中因为具有相同名称的类和方法而发生冲突的问题。
    添加了命名空间后就不必担心代码冲突问题。

  2. 命名空间一个最明确的目的就是解决重名问题

  3. PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。
    这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀

谈一谈restful api设计

  1. 要使用https通信协议。

  2. 尽量将api部署到专用域名之下,例如:https://api.kegog.com/
    ,如果确定api很简单,不会有进一步的扩展,可以考虑放在主域名之下,例如:
    https://www.kegog.com/api

  3. 应该将api的版本号放入url,例如:https://api.kegog.com/v1/

  4. 路径:每个网址代表一种资源,所以网址中不能有动词,只能有名词,而且所用的名词往往与
    数据库的表格名相对应。并且使用复数形式。
    例如:https://api.kegog.com/v1/zoos
    https://api.kegog.com/v1/animals

  5. http动词,常用的http动词有5个,
    get(select)
    post(create)
    put(update):更新全部信息
    patch(update):更新部分信息
    delete (delete)

  6. 分页
    ?limit=10;指返回记录的数量

  7. 状态码【status codes】
    201:(post/put/patch)用户新建或修改数据成功
    202:(表示一个请求已经进入后台排队,异步任务)
    204:(delete)用户删除数据成功
    400:(post/put/patch)用户发出的请求有错误,服务器无法正常读取。
    401: 表示用户没有权限(令牌,用户名,密码错误)

描述一下php开发中常见的几种攻击以及解决方案?

  1. 防止SQL注入,使用php内置的函数 mysql_real_escape_string() 过滤参数。

  2. 防止用户操纵变量。例如:test.php?uid=100,
    使用php函数is_numeric() 判断输入的是不是数字
    使用php函数strlen() 检查变量的长度。
    还可以使用正则表达式过滤。

  3. 缓冲区溢出攻击。使用正则表达式和strlen()函数确保用户提交的数据不会使内存缓冲区溢出。

  4. 跨站点脚本攻击(XSS)
    使用strip_tags()函数htmlspecialchars()函数,过滤

  5. 跨站点请求伪造(CSRF)
    业界推崇这个方法。在请求中提添加一个token字段,如:www.hao123.com?name=abc&age=123&token=[random(seed)];token为客户端和浏览器的秘密,其他人不知道。一般要保证token的保密性和随机性。

  6. 浏览器数据操纵。

  7. 远程表单提交,使用唯一令牌阻止

区分一下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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值