加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

PHP 高级面试115题汇总(含答案)

发布时间:2020-12-24 22:23:28 所属栏目:运营 来源:网络整理
导读:1、给你四个坐标点,判断它们能不能组成一个矩形,如判断 ([0,0],[0,1],[1,0]) 能组成一个矩形。 勾股定理,矩形是对角线相等的四边形。只要任意三点不在一条直线上,任选一点,求这一点到另外三点的长度的平方,两个短的之和如果等于最长的,那么这就是矩形

14、http 状态码及其含意

200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
301 被请求的资源已永久移动到新位置。
302 请求的资源现在临时从不同的 URI 响应请求。
400 1、语义有误,当前请求无法被服务器理解。2、请求参数有误。
401 当前请求需要用户验证。
403 服务器已经理解请求,但是拒绝执行它。
404 请求失败,请求所希望得到的资源未被在服务器上发现。
500 服务器遇到了一个未曾预料的状况,无法完成对请求的处理,会在程序码出错时出现。
501 服务器不支持当前请求所需要的某个功能。无法识别请求的方法。
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 由于临时的服务器维护或者过载,服务器当前无法处理请求。

15、linux 中怎么查看系统资源占用情况

top、htop、free、uptime

16、SQL 注入的原理是什么?如何防止 SQL 注入
原理:第一 SQL 本身有问题(这个不是主要问题)。第二你写的 SQL 很有问题(这是最主要的)

防范:第一,绝对不要相信用户输入的任何东西。第二,预编译。现在的框架一般都会有 SQL 过滤的。

17、isset (null) isset (false) empty (null) empty (false) 输出
PHP 入门问题,isset 和 empty 的区别

分别是 false,true,true

18、优化 MYSQL 的方法
第一,数据超过一定数量或者体积,请拆分表,垂直或者水平分(最有效果的优化)

第二,务必有自增主键。通过自增主键来查数据是最快的。

第三,常用的查询字段建立联合索引,写 SQL 一定要尊从最左原则,用到这个索引。

第四,不要把逻辑运算放到 sql 里。言外之意是,不要写太复杂的 SQL,你能写复杂的 SQL 你肯定也能通过 PHP 实现。

19、数据库中的事务是什么?
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,

事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

20、写一个函数,尽可能高效的从一个标准 URL 中取出文件的扩展名
会 写正则最好。我反正不会正则,需要用的时候就百度。

21、参数为多个日期时间的数组,返回离当前时间最近的那个时间
遍历数组,求当前时间差,和第一个进行对比,小于第一个交换位置。最后取第一个即可。

22、echo、print、print_r 的区别
这三个放在一起,回答的点在于,print_r 是函数,echo、print 是结构语言。

23、http 协议的 header 中有哪些 key 及含义
这个问题,很难。一会半会说不清楚。如果做过 PHP restful 接口开发,也踩过这里面的坑,那应该是可以答出来常用的几个 KEY 的。

24、二叉树前中后遍历代码

  1. 层序遍历
  2. 先序遍历
  3. 中序遍历
  4. 后序遍历

25、PHP 的数组和 C 语言的数组结构上有何区别?
但从 PHP 来讲,考的是 PHP 数组的实现。可以简单的认为,PHP 的数组是 hash 桶 + 十字链表(实际上是数列 Array,列表 List,散列表 / 关联数组 / 字典 Hashtable 的聚合体)。优点是查询效率很高,遍历很方便,缺点是,占内存较多。(还是空间换时间的思路,毕竟现在内存又不值钱)

C 语言的数组,就是定长定类型的数列。

26、Redis 的跳跃表怎么实现的
跳跃表 (skiplist) 是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。

27、哈希是什么?hash 冲突后,数据怎么存?

28、聚簇索引,聚集索引的区别?

29、B+Tree 是怎么进行搜索的

30、数组和 hash 的区别是什么?

31、写个函数,判断下面扩号是否闭合,左右对称即为闭合:((())),)(()),(()))),(((((()),(()()),()()

32、 找出数组中不重复的值 [1,3,5]
用普通方法,肯定很容易的。

33、32 题你的时间复杂度是多少?有的情况下,你写了个算法,然后面试官会让你把你的算法的时间复杂度表达式写出来

34、PHP 的的这种弱类型变量是怎么实现的?
考 zval 的,PHP 的八种类型,本质只有一个结构。

35、在 HTTP 通讯过程中,是客户端还是服务端主动断开连接?
三次握手和四次挥手,以及他们每步的状态。

这个问题最好能一步到位回答的全面的。一般都是有客户端告诉服务端,我这边东西发完了,可以断连接了么。但是如果客户端发完 FIN 服务端没有回复,就会重试,直到超过超时时间,就断了。服务端也一样,超过时间,服务端就断了。

36、PHP 中发起 http 请求有哪几种方式?它们有何区别?

GET
POST
HEAD
PUT
DELETE
OPTIONS
TRACE
CONNECT

37、有一颗二叉树,写代码找出来从根节点到 flag 节点的最短路径并打印出来,flag 节点有多个。比如下图这个树中的 6 和 14 是 flag 节点,请写代码打印 8、3、6 和 8、10、14 两个路径

典型的二叉搜索树。大学数据结构的基础题。

38、有两个文件文件,大小都超过了 1G,一行一条数据,每行数据不超过 500 字节,两文件中有一部分内容是完全相同的,请写代码找到相同的行,并写到新文件中。PHP 最大允许内内为 255M。
将文件拆分成若干个小文件,根据内容计算 hash 值,分散到不同文件。

39、请写出自少两个支持回调处理的 PHP 函数,并自己实现一个支持回调的 PHP 函数

array_map,array_filter,array_walk

40、请写出自少两个获取指定文件夹下所有文件的方法(代码或思路)。
核心方法是 scandir,核心思想是递归。

41、请写出自少三种截取文件名后缀的方法或函数(PHP 原生函数和自己实现函数均可)

echo substr(strrchr($file,'.'),1);

echo substr($file,strrpos($file,'.')+1);

$arr=explode('.',$file);
echo $arr[count($arr)-1];

$arr=explode('.',$file);
echo end($arr);

echo strrev(explode('.',strrev($file))[0]);

echo pathinfo($file)['extension'];

echo pathinfo($file,PATHINFO_EXTENSION);

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读