php面试 基础知识整理

1、COW机制

Copy On Write 写时复制。变量在写入时才真正复制一份内存进行修改。

一种内存优化手段

详情见:http://www.nowamagic.net/librarys/veda/detail/1454

2、php 字符串得四种表达方式

使用单引号进行定义(速度较快)

使用双引号进行定义

heredoc(类似双引号)定界符

nowdoc(类似单引号)

3、不要用等号去比较浮点数

原因:因为计算机在计算浮点数时,会将浮点数转换为二进制数,难免会造成精度丢失。

4、输出结果为false的其中情况

整型为0时       0

浮点      0.0

boolean      false

空字符串:    '    '

0字符串:    '0'

空数组:     []

空类型      null

5、为null的三种情况

直接赋值变量为null、未定义的变量为null  、使用函数unset()销毁的变量为null

6、运算符

PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。(错误抑制符,使用时,会忽略代码报错)


运算符优先级:递增/递减 > ! > 算术运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算符( ^ ) > 位运算符( | ) > 逻辑与 > 逻辑或 > 三目 > 赋值 > and > xor > or
括号可以增加代码可读性
递增/递减运算符不影响布尔值
递增NULL值为1,递减NULL值没有效果
逻辑运算符短路效应:&& 或 || ,当左边部分符合条件是,右边部分将不会执行

7、遍历数组的三种方式

第一种    使用for循环遍历     (只能遍历索引数组)

第二中    使用foreach遍历数组     (可以遍历索引数组和关联数组)会reset()

第三种    使用while、list()、each()组合循环   (可以遍历索引数组和关联数组)     不会reset()

注:reset()意思为是指针指向数组的第一个元素

8、include和required的区别

无论require位置如何,指定文件都将包含到出现require的脚本中。例如,即时require放在计算为假的if语句中,依然会包含指定文件


加载过程中,如果未找到文件则include会发出一条警告,而require会发出一个致命错误


require(include)/require_once(include_once)唯一区别是后者PHP会检查该文件是否已被包含过,如果是则不会再次包含

9、一些字符串函数

例:strlen  计算字符串长度       sub_str()   截取字符串     strstr ()    查找字符串中某个字符的位置

str_repeat()    重复写入某个字符

注:其他详见php手册

10、数组函数

例 :count()    计算数组长度       array_column()   获取数组的某一列,重新组成一个数组

       array_key_exits()   检测数组的某个键值是否存在       array_sum()   求数组所有元素的和

array_merge()   数组合并

注:其他详见php手册

11、可变函数

如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。

例:

 结果:

 12、正则表达式

作用:分割、查找、匹配、替换字符串


preg_match($pattern, $subject, $match):执行匹配正则表达式,匹配一次,返回pattern的匹配次数
preg_match_all($pattern, $subject, $match):执行一个全局正则表达式匹配,全局匹配,返回全局匹配的次数
preg_replace($pattern, $replacement, $subject):执行一个正则表达式的搜索和替换,返回全部结果
preg_filter($pattern, $replacement, $subject):执行一个正则表达式的搜索和替换,仅仅返回(可能经过转化)与目标匹配的结果
preg_grep($pattern, $subject):返回给定数组$subject中与$pattern相匹配的元素组成的数组
preg_split($pattern, $subject):类似explode()函数,通过一个正则表达式分隔字符串
preg_quote($str):转义正则表达式字符

13、会话控制

为什么要使用会话控制技术?因为HTTP协议是无状态的,为了保存用户信息,所以使用会话控制技术。


Cookie:存储在客户端,不占用服务器资源,但是不安全
Session:存储在服务端,占用服务器资源,比较安全


Session是基于Cookie的,用户禁用Cookie也可以使用Session,可以用session_name()、session_id()函数或SID常量传递SessionID (SID在用户开启Cookie时为空,关闭时有值)

14、文件函数

例:fopen()  打开一个文件或url       (可用于检测网络是否连接)

fclose()    关闭一个文件   

file_exists()    检测一个文件是否存在   

file_get_contents()     将整个文件读入一个字符串

file_put_contents()    将一个字符串写入文件

move_upload_file()     移动一个文件     (用于文件上传)    

注:其它详见https://www.php.net/manual/zh/ref.filesystem.php

15、HTTP协议

特点:HTTP协议是无状态、无连接的;基于B/S模式;通信开销小、简单快速、传输成本低;使用灵活、可使用超文本传输协议;节省传输时间。

工作原理

客户端发送请求给服务器,创建一个TCP连接,指定端口号,默认为80,连接到服务器,服务器监听浏览器请求,一旦监听到客户端请求,分析请求类型后,服务器会向客户端返回状态信息和数据内容。

HTTP请求方式

GET      请求指定的页面信息,并返回实体主体
HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。

POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT      从客户端向服务器传送的数据取代指定的文档的内容。
DELETE    请求服务器删除指定的页面
CONNECT   HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS   允许客户端查看服务器的性能
TRACE     回显服务器收到的请求,主要用于测试或诊断。

HTTP状态码

  • 1**     信息,服务器收到请求,需要请求者继续执行操作
  • 2**    成功,操作被成功接收并处理
  • 3**    重定向,需要进一步的操作以完成请求
  • 4**    客户端错误,请求包含语法错误或无法完成请求
  • 5**    服务器错误,服务器在处理请求的过程中发生了错误

常见状态码

  • 200    请求成功
  • 301    资源(网页等)被永久转移到其它URL
  • 404    请求的资源(网页等)不存在
  • 500    内部服务器错误

16、OSI的七层模型

应用层    7

表示层   6

会话层    5

传输层    4

网络层    3

数据链路层   2

物理层    1

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值