近日面(笔)试题部分整理(PHP/不定时更新)

2020-04-04 03:46:05 PHP 阅读 (3293) 评论(0)

        前一段因为各种原因吧,还是从上家公司辞职了,休息了几天后,就又开始找工作了。哎,虽然现在国内疫情形势向好,但是对于行业求职者来说,影响还是在持续发酵的。因为现在的疫情很多公司和现在在职有换工作意向的人都变得非常谨慎了,造成的影响就是现在市面上需求的岗位数量要远低于没有往年同时期的数量,这对于我这种已经成既定事实的离职并且需要重新找工作的人来说,压力是蛮大的 ! 现实是残酷的,我这几天在各个招聘网站上投递简历,收到的面试数寥寥,还记得我2018年夏天第二次来上海,那会来上海前已经约好了面试,5天面了10家公司,收到两个offer,随即就入职了,今时不同往日啊。说了很多废话,开始正题吧,把这几天被问到的一些题目整理下



一. 数据结构

  1. PHP中的数组的数据结构

    思路:这个问题已经相对很底层了。PHP的内核都是C语言实现的,所以作为PHP的一个基础数据类型的数组也是由C语言实现的,实话说,我对于这种底层实现了解的确实比较少一些,趁此机会我也查找了一些资料学习了下,大家可以看下我这里贴的这两个文章,我这里就不班门弄斧了。

  2. 链表,堆,栈

思路:

  • 堆就是一个完全的二叉树,堆中某个节点的值总是不大于或不小于其父节点的值,将根节点最大的堆叫做大顶堆,根节点最小的堆叫做小顶堆。

  • 栈是一种运算受限的线性表,其仅允许在表的一端进行插入和删除操作,而这一端被称为栈顶,另一端位栈底,因为栈只能在一端操作,所以栈的特性就是“先进后出”,比如说,向一个桶里装沙子,倒出时,最先倒出来的是最后装到桶里的上层沙子。

  • 链表是一种存储数据集合的数据结构,链表中每一个元素都是一个对象,每个对象称为一个节点,包含有当前节点的数据和指向下一个节点的指针,通过各个节点之间的相互连接,最终串联成一个链表。链表又分为有单向链表和双向链表等几种类型 。单向链表的每个链表中的节点都包含一个值和指向下一个节点的指针,而双向链表的每个链表中的节点都包含一个值和两个指针(一个指向下一个节点,一个指向上一个节点)。


二. PHP

  1. 常用表单数据过滤函数&常用数组操作函数

    思路:很基础的问题,我这里就不列了。(strip_tags,htmlspecialchars,array_filter,array_reduce.etc...)

  2. 如果一个类的构造方法被定义为私有(private)的,怎么调用类里的普通(public,非static)的方法

    思路:可以先在类里声明一个静态方法,在这个静态方法里调用构造并返回类的实例化对象,然后拿到这个对象就可以调用类里的普通方法了

    image.png

  3. Traits

    思路:总所周知PHP是单继承语言,无法同时从多个基类里继承方法和属性,为了解决这个问题PHP 5.4就引入Traits特性。

    1585937728396046.png

  4. 静态延迟绑定

    思路:看下面的代码,类中的静态属性和静态方法定义好之后,如果是常规的 self 调用,那么它的“值”就已经被“绑定”了,换句话说,就算子类继承了,子类从父类继承的静态属性和静态方法还是父类中定义好的“值”。了实现这样的效果,就是父类中定义的静态方法和静态属性(子类中可能要用到这些)不要立即绑定,而是由真正继承的子类来确定,PHP5.5引入 static 关键字解决这个问题,就是下图中的“static::静态属性名”,“static::静态方法名”。

    image.png

  5. web开发框架路由实现原理

    思路:一般web 开发框架(TP,Yii,Laravel等)的路由原理实现大同小异,大致是当一个请求到达框架处理时,比如我博客的一个链接 http://sysheng.cn/category/php.html,经过入口文件及一系列其他文件的引导或配置加载,到路由分发时,框架会从请求的url里解析出具体的请求信息(参数)等,一般会拿到当前这个请求所请求的“(默认)模块/控制器/方法”。如果框架没有开启路由功能,那么 框架就会按照它解析出的“(默认)模块/控制器/方法”去完成后续的逻辑处理,如果程序里没有这些 “模块,控制器,方法”等,一般会报一个404的错 。如果框架开启了路由功能,那么框架会拿着解析出的请求信息和程序中的路由配置文件进行匹配(一般是正则匹配),如果匹配到了,就去完成后续的逻辑处理,没有的话一般也会报一个404的错哦。

  6. 斐波那契数列

    思路:斐波那契数列:1、1、2、3、5、8、13、21、34、……,这个数列从第3项开始,每一项都等于前两项之和。

    image.png


       



评论