PHP面试内容 整理搜集 PHP面试涉及技术 一文回顾全部 主要含PHP面试命令列表 方法列表...

PHP面试时常涉及的内容总结

  • 熟悉框架 
  • 逻辑题 快排  正则 数组函数....
  • 抽奖, 秒杀
  • 数据库 优化,sql书写
  • 缓存 redis mecache
  • Linux命令
  • 其他技术 sphinx, swool 异步处理,
  • (同步异步 分布式)
  • 其他语言 Java python(多线程 爬虫) go c(一般温个别的)

 

PHP7新特性 整理制作

 https://www.cnblogs.com/stillstep/p/11020572.html

 

URL正则表达式 email邮箱正则匹配表达式 中文正则匹配表达式 3个常见面试的正则表达式问题和笔试题
https://www.cnblogs.com/stillstep/p/11013378.html

 

面向对象的三大特性是"封装、"多态"、"继承",五大原则是"单一职责原则"、"开放封闭原则"、"里氏替换原则"、"依赖倒置原则"、"接口分离原则"。
面向对象三大特性,五大原则
https://blog.csdn.net/xtzmm1215/article/details/46946655

 

php下载大文件的方法 异步处理?? 使用swool gearman等...

 

探讨PHP中this,self,parent的区别详解_php技巧_脚本之家
https://m.jb51.net/article/38105.htm


API接口设计要考虑的因素 - vbird的博客 - CSDN博客
一、接口版本化
二、接口面向的应用场景
三、请求参数的规范性及处理的统一性
四、返回数据类型、返回码及信息提示的规范性
五、接口安全验证及权限的控制
六、接口调用频率的控制
七、请求接口日志的记录
八、接口文档的可读性
https://blog.csdn.net/Dorisnzy/article/details/80882144

 

面向对象的五大基本原则
单一职责原则(SRP)
开放封闭原则(OCP)
里氏替换原则(LSP)
依赖倒置原则(DIP)
接口隔离原则(ISP)
面向对象三大特性,五大原则
https://blog.csdn.net/xtzmm1215/article/details/46946655

 

PHP的面向对象 — 封装、继承、多态 - 谁还在我身边 - 博客园

https://www.cnblogs.com/wk1102/p/6986483.html?utm_source=itdadao&utm_medium=referral
面向过程简单直接,易于入门理解,模块化程度较低。而面向对象相对于面向过程较为复杂,不易理解,模块化程度较高。可总结为下面三点:

都可以实现代码重用和模块化编程,但是面对对象的模块化更深,数据更封闭,也更安全!因为面向对象的封装性更强!
面对对象的思维方式更加贴近于现实生活,更容易解决大型的复杂的业务逻辑
从前期开发角度上来看,面对对象远比面向过程要复杂,但是从维护和扩展功能的角度上来看,面对对象远比面向过程要简单!
编程思想:面向对象和面向过程
https://www.cnblogs.com/BeiGuo-FengGuang/p/5935763.html
面向对象有三大特性,分别是封装性、继承性和多态性,这里小编不给予太多的解释,因为在后边的博客会专门总结的!
面向过程

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

面向对象

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低

 

以下程序,变量str什么值的情况下输入111?

 

if( ! $str ) { echo 111; }

 

在$str值为:0,’0′,false,null,”"

你所知道的php数组相关的函数?

 

array()----创建数组

 

array_combine()----通过合并两个数组来创建一个新数组

 

range()----创建并返回一个包含指定范围的元素的数组

 

compact()----建立一个数组

 

array_chunk()----将一个数组分割成多个

 

array_merge()----把两个或多个数组合并成一个数组

 

array_slice()----在数组中根据条件取出一段值

 

array_diff()----返回两个数组的差集数组

 

array_intersect()----计算数组的交集

 

array_search()----在数组中搜索给定的值

 

array_splice()----移除数组的一部分且替代它

 

array_key_exists()----判断某个数组中是否存在指定的key

 

shuffle()----把数组中的元素按随机顺序重新排列

 

array_flip()----交换数组中的键和值

 

array_reverse()----将原数组中的元素顺序翻转,创建新的数组并返回

 

array_unique()----移除数组中重复的值

PHP程序使用utf-8编码, 以下程序输出结果是什么? B

<?php

$str = ’hello你好世界’;

echo strlen($str);

?>

A) 9           B) 13(gbk) C) 18                   D) 17(utf8)

 

在java中,关于String中各种编码中文字符的字节长度

先来看英文字母所占字节数:

char c = 'a';

结果如下:

默认编码:UTF-8, 字节数:1

编码:utf8, 字节数:1

编码:utf16, 字节数:4

编码:gb2312, 字节数:1

编码:gbk, 字节数:1

再来看看中文字符:

char c = '中';

结果如下:

默认编码:UTF-8, 字节数:3

编码:utf8, 字节数:3

编码:utf16, 字节数:4

编码:gb2312, 字节数:2

编码:gbk, 字节数:2

可以发现UTF-16编码下,无论中文还是字母都占用4个字节。

 

php strlen mb_strlen计算中英文混排字符串长度

$str=‘中文a字1符‘; 

echo strlen($str); 

结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14 
mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 

数据库用utf8编码时 同理 一个中文长度为1

 

在经过实验后得到以下结论(适用MySQL 5.0以上版本):

1.一个汉字占多少长度与编码有关:

         UTF-8:一个汉字=3个字节

            GBK:一个汉字=2个字节

 2.在MySQL中 varchar(n)和char(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别

     即 MySQL 并不会对超过长度的字符报错,而是直接截断了. 并且 char(2) 和 varchar(2) 都能存储 2个汉字,或者是两个英文字符. 

 3. MySQL 的 char(n) 和varchar(n) 可以直接存储 n 个汉字. 而不是 n/3或者 n/2 个,mysql 屏蔽了具体的存储细节,而直接以实际字符的个数来决定char存储的个数

--------------------- 

作者:risingsun001 

来源:CSDN 

原文:https://blog.csdn.net/risingsun001/article/details/9376249 

版权声明:本文为博主原创文章,转载请附上博文链接!

ySql中UTF8 和 GBK 编码中文字符长度问题

 

英文字母和中文汉字在不同字符集编码下的字节数对比

英文字母:中文汉字:(括号内为中文汉字所占字节数)

字节数 : 1(2);编码:GB2312

字节数 : 1(2);编码:GBK

字节数 : 1(2);编码:GB18030

字节数 : 1(1);编码:ISO-8859-1

字节数 : 1(3);编码:UTF-8

字节数 : 4(4);编码:UTF-16

字节数 : 2(2);编码:UTF-16BE

字节数 : 2(2);编码:UTF-16LE

--------------------- 

作者:四海银狐 

来源:CSDN 

原文:https://blog.csdn.net/twtcqw2008/article/details/80694728 

版权声明:本文为博主原创文章,转载请附上博文链接!

英文字母和中文汉字在不同编码下的字节数对比

 

 

mysql:

分享几道Mysql常见的面试题
https://m.2cto.com/database/201806/752176.html

  

【MySQL】20个经典面试题, - waveclouds的博客 - CSDN博
https://blog.csdn.net/waveclouds/article/details/79535685
MySQL常见面试题 - Frankiee - 博客园
https://www.cnblogs.com/frankielf0921/p/5930743.html
1. 主键 超键 候选键 外键
2.数据库事务的四个特性及含义
3.视图的作用,视图可以更改么?
4.drop,delete与truncate的区别
5.索引的工作原理及其种类
局部性原理与磁盘预读
B-/+Tree索引的性能分析
7.数据库范式
第三范式(3NF)

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。(我的理解是消除冗余)
9.存储过程与触发器的区别

 

redis和memcached的优缺点及区别
https://blog.csdn.net/TiaoZhanJi_Xian/article/details/80301976
5. Memcache与Redis的区别都有哪些?
6. Redis 常见的性能问题都有哪些?如何解决?
7, redis 最适合的场景


Redis最适合所有数据in-momory的场景
7, redis 最适合的场景


Redis最适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别
在国外火了,看看外国人翻唱这首歌,完全完全不一样的感觉 ...

 

LNMP环境的安装配置 - syoukaihou - 博客园
https://www.cnblogs.com/xxoome/p/5884063.html
LNMP环境搭建与配置(一) - 变成习惯 - CSDN博客
https://blog.csdn.net/miss1181248983/article/details/80890649
linux下安装nginx - syoukaihou - 博客园
http://www.cnblogs.com/xxoome/p/5866475.html

ajax优缺点 - 天满 - 博客园
https://www.cnblogs.com/xiaoxiao666/p/6541941.html

 

 

gearman(异步计算)学习 - lpfuture - 博客园
https://www.cnblogs.com/lpfuture/p/6973091.html
mysql中int可存储数据大小是2的12348次方, 、bigint、smallint 和 tinyint的区别详细介绍 - 独行客 - 博客园
https://www.cnblogs.com/yiwd/p/5531167.html
网络编程学习笔记一:Socket编程 - 极客先锋 - 博客园
https://www.cnblogs.com/jikexianfeng/p/5729168.html
docker-image container 基本操作 -常用命令 - 夏冬青 - 博客园
https://www.cnblogs.com/xiadongqing/p/6144053.html
PHP互换两个变量值的方法(不用第三变量)
php 快速定位代码错误
代码出现Bug,如何快速定位到Bug出现的位置和原因
PHP的面向对象 — 封装、继承、多态 - 谁还在我身边 - 博客园
https://www.cnblogs.com/wk1102/p/6986483.html?utm_source=itdadao&utm_medium=referral

 

GET和POST两种基本请求方法的区别

你轻轻松松的给出了一个“标准答案”:

GET在浏览器回退时是无害的,而POST会再次提交请求。

GET产生的URL地址可以被Bookmark,而POST不可以。

GET请求会被浏览器主动cache,而POST不会,除非手动设置。

GET请求只能进行url编码,而POST支持多种编码方式。

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

GET请求在URL中传送的参数是有长度限制的,而POST么有。

对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

GET参数通过URL传递,POST放在Request body中。

(本标准答案参考自w3schools)

“很遗憾,这不是我们要的回答!”

https://www.cnblogs.com/logsharing/p/8448446.html

 

 

gearman管理工具GearmanManager的安装与使用 -
https://www.cnblogs.com/jkko123/p/6496901.html

 

PHP Gearman扩展函数列表

https://blog.csdn.net/huangjinvv/article/details/8004370


https://app.yinxiang.com/shard/s26/nl/23207001/c8c7e3f1-ed93-4b89-8792-3688629177bf?title=PHP%20Gearman%E6%89%A9%E5%B1%95%E5%87%BD%E6%95%B0%E5%88%97%E8%A1%A8%20-%20HuangJin's%20blog%20-%20CSDN%E5%8D%9A%E5%AE%A2

PHP: Gearman - Manual

GearmanClient — The GearmanClient class

GearmanJob — The GearmanJob class

GearmanTask — The GearmanTask class

GearmanWorker — The GearmanWorker class

GearmanException — The GearmanException class

https://app.yinxiang.com/shard/s26/nl/23207001/3cc9cf31-4f8e-415c-b0a6-ae9937b90c91?title=PHP%3A%20Gearman%20-%20Manual

https://www.php.net/manual/zh/book.gearman.php

 

你轻轻松松的给出了一个“标准答案”:

GET在浏览器回退时是无害的,而POST会再次提交请求。
 
GET产生的URL地址可以被Bookmark,而POST不可以。
 
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
 
GET请求只能进行url编码,而POST支持多种编码方式。
 
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
 
GET请求在URL中传送的参数是有长度限制的,而POST么有。
 
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
 
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
 
GET参数通过URL传递,POST放在Request body中。
(本标准答案参考自w3schools)GET和POST两种基本请求方法的区别https://www.cnblogs.com/logsharing/p/8448446.html

 

几种跨域实现方式

方式八:代理
方式七:WebSocket
方式六:通过document.domain+iframe来跨子域(必须主域相同)
方式五:window.postMessage()(不常用)
方式四:window.name+iframe
方式三:使用跨域资源共享(CORS)来跨域
方式二:JSONP跨域
方式一:图片ping或script标签跨域
4. websocket
postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。
3. postMessage
5. Node中间件代理(两次跨域)
九种跨域方式实现原理(完整版)
https://www.cnblogs.com/fundebug/p/10329202.html

 

以下程序,变量str什么值的情况下输入111?
if( ! $str ) { echo 111; }
在$str值为:0,’0′,false,null,”"你所知道的php数组相关的函数?
array()----创建数组
array_combine()----通过合并两个数组来创建一个新数组
range()----创建并返回一个包含指定范围的元素的数组
compact()----建立一个数组
array_chunk()----将一个数组分割成多个
array_merge()----把两个或多个数组合并成一个数组
array_slice()----在数组中根据条件取出一段值
array_diff()----返回两个数组的差集数组
array_intersect()----计算数组的交集
array_search()----在数组中搜索给定的值
array_splice()----移除数组的一部分且替代它
array_key_exists()----判断某个数组中是否存在指定的key
shuffle()----把数组中的元素按随机顺序重新排列
array_flip()----交换数组中的键和值
array_reverse()----将原数组中的元素顺序翻转,创建新的数组并返回
array_unique()----移除数组中重复的值PHP程序使用utf-8编码, 以下程序输出结果是什么? B<?php$str = ’hello你好世界’;
echo strlen($str);
?>
A) 9           B) 13(gbk) C) 18                   D) 17(utf8)先来看英文字母所占字节数:
char c = 'a';结果如下:默认编码:UTF-8, 字节数:1编码:utf8, 字节数:1编码:utf16, 字节数:4编码:gb2312, 字节数:1编码:gbk, 字节数:1再来看看中文字符:char c = '中';结果如下:默认编码:UTF-8, 字节数:3编码:utf8, 字节数:3编码:utf16, 字节数:4编码:gb2312, 字节数:2编码:gbk, 字节数:2
可以发现UTF-16编码下,无论中文还是字母都占用4个字节。$str=‘中文a字1符‘; echo strlen($str); 

转载于:https://www.cnblogs.com/stillstep/p/11052996.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值