Part1:HTTP协议

  1.状态码的含义

            1xx(临时响应)

      表示临时响应并需要请求者继续执行操作的状态代码。  

    代码   说明   

    100   (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。    

    101   (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。   

    2xx (成功)  

      表示成功处理了请求的状态代码。  

    代码   说明   

    200   (成功)  服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。   

    201   (已创建)  请求成功并且服务器创建了新的资源。   

    202   (已接受)  服务器已接受请求,但尚未处理。   

    203   (非授权信息)  服务器已成功处理了请求,但返回的信息可能来自另一来源。   

    204   (无内容)  服务器成功处理了请求,但没有返回任何内容。   

    205   (重置内容) 服务器成功处理了请求,但没有返回任何内容。  

    206   (部分内容)  服务器成功处理了部分 GET 请求。   

    3xx (重定向)   

      表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。  

    代码   说明   

    300   (多种选择)  针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。   

    301   (永久移动)  请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。  

    302   (临时移动)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。  

    303   (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。  

    304   (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。   

    305   (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。   

    307   (临时重定向)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。   

    4xx(请求错误)   

      这些状态代码表示请求可能出错,妨碍了服务器的处理。  

    代码   说明   

    400   (错误请求) 服务器不理解请求的语法。   

    401   (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。   

    403   (禁止) 服务器拒绝请求。  

    404   (未找到) 服务器找不到请求的网页。  

    405   (方法禁用) 禁用请求中指定的方法。   

    406   (不接受) 无法使用请求的内容特性响应请求的网页。   

    407   (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。  

    408   (请求超时)  服务器等候请求时发生超时。   

    409   (冲突)  服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。   

    410   (已删除)  如果请求的资源已永久删除,服务器就会返回此响应。   

    411   (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。   

    412   (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。   

    413   (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。   

    414   (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。   

    415   (不支持的媒体类型) 请求的格式不受请求页面的支持。   

    416   (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。   

    417   (未满足期望值) 服务器未满足"期望"请求标头字段的要求。   

    5xx(服务器错误)  

      这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。  

    代码   说明   

    500   (服务器内部错误)  服务器遇到错误,无法完成请求。   

    501   (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。   

    502   (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。   

    503   (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。   

    504   (网关超时)  服务器作为网关或代理,但是没有及时从上游服务器收到请求。   

    505   (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。        

Part2:php魔术方法

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep()__wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被称为"魔术方法"(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。 

构造函数

void __construct ([ mixed $args [, $... ]] )

PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

Note: 如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。

析构函数

void __destruct ( void )

PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。此外也和构造函数一样,子类如果自己没有定义析构函数则会继承父类的。

析构函数即使在使用 exit() 终止脚本运行时也会被调用。在析构函数中调用 exit() 将会中止其余关闭操作的运行。

Note:

析构函数在脚本关闭时调用,此时所有的 HTTP 头信息已经发出。脚本关闭时的工作目录有可能和在 SAPI(如 apache)中时不同。

Note:

试图在析构函数(在脚本终止时被调用)中抛出一个异常会导致致命错误。

Part3:本人面试中遇到的问题(部分)

  1)问你做了什么项目,或者你做的功能模块间的联系

    这个问题,要结合项目讲

  2)如何建立框架,或者就是你对php框架的理解

    在php开发过程中,项目的架构中:比如系统模块的耦合性,代码可重用性,可读性,可维护性等一系列问题,框架显得尤为重要。

    说白了,框架使代码写起来更顺手,维护起来更容易,开发起来很快。

    将数据提取出来显示到页面上,这就涉及到另外两方面,首先是逻辑的控制,然后是页面的显示。人们想了个名词叫做MVC模式

    比如路由(利于用户的访问,还有利于seo优化)、模板引擎(比如smarty 用于显示页面)这些都是后来衍生出来的,觉得还是使用现成的比较好,毕竟那么多人维护的产品可不是吃素的。

  3)反转字符串如何实现

    直接用函数 strrev()会出现问题(有中文的情况下回乱码)

    下面是实现方式 

 <?php
function getRev($str, $encoding)
{
$resoult = '';
$strlen = mb_strlen($str, $encoding);
for ($i=$strlen-1; $i>=0; $i--) {
$resoult .= mb_substr($str,$i, 1,$encoding);
}
return $resoult;
}
$str = "Nihaonimeide你妹的";
echo getRev($str, 'utf-8');
?>

  4)mysql:死锁和事务有什么关系

  5)索引在什么情况下使用

  

  6)如何建立索引

  7)单进程和多进程,单线程和多线程

  8)php是单线程还是多线程

  9)购物车中的商品信息是存储在cookie还是session中

  10)cooike的原理

  11)cookie中数据是如何存放的

  12)linux:比如有个文件夹,文件夹下有n个文件夹,n个文件夹下又有n个文件

        如何查找到某个文件中的某行内容

  13)死锁的含义

  14)  查找某个字符串是否在另一个字符串中

  15)你是否开发过接口

  16)什么是设计模式

  17)闭包是什么

PHP高级工程师面试 - 笔试题的更多相关文章

  1. Web前端面试笔试题总结

    最近一段时间要毕业了,忙着找工作,见过不少笔试面试题,自己总结了一些加上网上找的一些整合了一下.答案暂时都东拼西凑出来了,但是还是先不发出来,一方面是答案并不是唯一的并且自己的答案不能保证对,另一方面 ...

  2. 整理收藏一份PHP高级工程师的笔试题

    整理了一份PHP高级工程师的笔试题,问题很全面.嗯,基本上这些题都答得不错,那么你应该可以胜任大部分互联网企业的PHP职位了.下面直接上题. 1. 基本知识点 HTTP协议中几个状态码的含义:503, ...

  3. Java 面试/笔试题神整理 [Java web and android]

    Java 面试/笔试题神整理 一.Java web 相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并 ...

  4. python面试笔试题汇总

    Python面试攻略(嗨谈篇) 110道python面试笔试题汇总,你能答对几道? Python 面试问答 Top 25 2018 年最常见的 Python 面试题 & 答案

  5. 深圳市利汇电子商务科技有限公司2019年java面试笔试题

    垃圾公司,建议不要去,写的地址去了发现是两个公司公用一个办公场地,还没有公司的招牌,去了交简历给前台然后就是 填一份求职申请,一份笔试题如下,然后就等待,先是人事的一个小妹妹面试,问一些个人问题,为什 ...

  6. 分享18道Java基础面试笔试题(面试实拍)

    上图来自Java技术栈微信群里的群友分享,看起来比较基础,但不一定人人都答得上来. 图片比较模糊,小编把题目进行了文字化. 1.你最常上的两个技术站和最常使用的两个app分別进什么?主要解决你什么需求 ...

  7. java面试笔试题大汇总

    第一,谈谈final, finally, finalize的区别.  最常被问到.   第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以 ...

  8. 110道python面试笔试题汇总,你能答对几道?

    数据分析系列教程插播一篇面试题教程,最近公众号新来了不少朋友,这几天不少粉丝留言说问我有没有python面试题,其实之前分享过一些面试题,今天统一再给大家分享一遍,也希望能帮助此时仍在找工作的同学,尽 ...

  9. 2019 奥买家java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.奥买家等公司offer,岗位是Java后端开发,因为发展原因最终选择去了奥买家,入职一年时间了,也成为了面试官 ...

随机推荐

  1. 【OCP 12c】最新CUUG OCP-071考试题库(64题)

    64.(22-7) choose the best answer: View the Exhibit and examine the structure of the ORDERS and ORDER ...

  2. CPU缓存刷新的误解

    即使是资深的技术人员,我经常听到他们谈论某些操作是如何导致一个CPU缓存的刷新.看来这是关于CPU缓存如何工作和缓存子系统如何与执行核心交互的一个常见误区.本文将致力于解释CPU缓存的功能以及执行程序 ...

  3. 私有成员的设置和访问方式——setter和getter

    在定义类时,为了保证类中成员数据安全性及的封装性,防止成员数据值被任意修改,通常将类中成员属性用private进行修饰. 被private修改的成员属性,只能在类中访问,跳出本类后,就无法直接访问. ...

  4. linux中文件句柄数问题

        问题描述:  有时候业务比较繁忙时,就会出现如下问题 too many open files:顾名思义即打开过多文件数.不过这里的files不单是文件的意思,也包括打开的通讯链接(比如sock ...

  5. P03-Python装饰器

    本文总结自oldboy python教学视频. 一.前言 1.装饰器本质上就是函数,功能是装饰其他函数,为其他函数添加附加功能. 装饰器在装饰函数时必须遵循3个重要的原则: (1)不能修改被装饰的函数 ...

  6. OpenERP how to set the tree view limit

    return { 'name':u'库存报表', 'view_type':'form', 'view_mode':'tree,form', 'res_model':'rainsoft.account. ...

  7. 如何写出优雅的JavaScript代码 ? && 注释

    如何写出优雅的JavaScript代码 ? 之前总结过一篇<如何写出优雅的css代码?>, 但是前一段时间发现自己的js代码写的真的很任性,没有任何的优雅可言,于是这里总结以下写js时应当 ...

  8. Java NIO开发需要注意的陷阱(转)

    陷阱1:处理事件忘记移除key在select返回值大于0的情况下,循环处理Selector.selectedKeys集合,每处理一个必须从Set中移除 Iterator<SelectionKey ...

  9. C++11 实现生产者消费者双缓冲

    基础的生产者消费者模型,生产者向公共缓存区写入数据,消费者从公共缓存区读取数据进行处理,两个线程访问公共资源,加锁实现数据的一致性. 通过加锁来实现 class Produce_1 { public: ...

  10. java处理数据库的CRUD

    package com.lhy.jdbc.util; import java.sql.Connection; import java.sql.PreparedStatement; import jav ...