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

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

  1. TCP相关的面试内容整理

    以下内容源于网络资料的学习整理.很多资料网上都有,但只有整理过一遍才属于自己的. 参考博客 http://www.cnblogs.com/BlueTzar/articles/811160.html(O ...

  2. 揭秘人工智能面试内容:8家国际巨头机器学习面试题目整理

    https://www.toutiao.com/a6675219466017571339/ 首先介绍一下主人公 这个大佬在机器学习(语音分析.文本分析和图像分析领域应用)领域有4年以上的从业经验.总的 ...

  3. Android面试资料整理

    文章目录 前言 面试问题整理 Android 问题 一.Activity 1.Activity 的生命周期 2.onStart()和onResume().onPause()和onStop()的区别? ...

  4. *Java软件开发面试知识整理*

    Java软件开发面试知识整理 围绕以下几点回答问题:是什么.为什么.什么时候用.项目实现.解决什么问题.遇到的困难 谈谈你对Java和C的理解? Java: 面向对象.Unicode:可以跨平台(JV ...

  5. 前端,通过面试去学习,综合(面试总结整理)

    前言 已经将近3年半没有出去面试了,近期在面试,对照着前端八股文准备的过程中,不禁感叹前端的东西实在是多,涉及的面太多,整个行业环境也比较卷,没办法- 在此过程中的提升确实要比平时做版本迭代需求来得快 ...

  6. 面试资料整理(整理中~)

    1.介绍下内存的几大区域? 栈区,堆区,静态区(全局区),常量区,代码区 动态数据区一般就是"堆栈",栈是线性结构,堆是链式结构. 本地变量在堆栈中.通过堆栈的基地址和偏移量来访问 ...

  7. 【面试题】某司社招面试题目整理及答案

    某司社招面试题目整理及答案 Java基础部分 HashMap的实现原理 如何解决Hash碰撞 HashMap的存储(hash算法.hash冲突.初始化.扩容) HashMap和HashTable的区别 ...

  8. 面试问题整理之操作系统和代码相关问题

    本文为操作系统以及C/C++相关面试问题整理.持续更新的更多更详细攻略可见这里,欢迎点星点关注 1.引用和多态的区别? 引用是除指针外另一个可以产生多态效果的手段.这意味着,一个基类的引用可以指向它的 ...

  9. 可能是一份最适合你的后端面试指南(部分内容前端同样适用)| 掘金技术征文...

    本文系掘金首发,禁止转载哦! 如果觉得文章内容不错的话,欢迎为我转身,啊!不对,是给我一个赞!点赞之后会有惊喜哦! 看本文之前,推荐给大家一个阿里云双11活动,真的非常非常非常推荐,对于新人阿里云真的 ...

最新文章

  1. Photoshop之学习笔记(2) - 常用快捷键
  2. Java 洛谷 P1425 小鱼的游泳时间
  3. 操作系统实验报告3:Linux 下 x86 汇编语言2
  4. JSF, MyFaces, RichFaces 和 Facelets的区别
  5. python读取mysql数据_如何将mysql的数据读取python
  6. es6 迭代器_揭秘ES6迭代器和迭代器
  7. Nginx大规模并发原理
  8. windows无法检索有关这台计算机上的磁盘信息_磁盘镜像软件OO DiskImage Pro 15.5介绍及安装教程...
  9. java base64编码的三种方式
  10. 电脑重装系统需要全盘格式化吗?这个事项需要看情况
  11. TCP连接保活之Keepalive
  12. 数据库中间表插入乱序
  13. android学习资料免费下载
  14. matlab 入门 mobi,MATLAB基础教程 pdf epub mobi txt 下载
  15. Ubuntu_扩容后没有作用——解决办法是要重新分区
  16. TAOCP-Reading-计算机程序设计艺术阅读-1-4
  17. linux怎么卸载字体,Ubuntu下字体安装与卸载
  18. 【图像压缩】连续比特率自适应《Asymmetric Gained Deep Image Compression With Continuous Rate Adaptation》
  19. 【WPF、UWP】搜索蓝牙设备
  20. 远程连接腾讯云MySQL数据库

热门文章

  1. 图片和文件上传的两款插件
  2. 走进人工智能,认识机器学习
  3. usaco Cow Tours 牛的旅行
  4. 上传图片被防火墙拦截_Web安全:文件上传漏洞
  5. java saf_Java 8 Lambda表达式探险
  6. jwt 私钥_一分钟带你了解JWT认证
  7. floquet端口必须沿z轴设置_金秀友佳FMH-630加工中心伸缩Y轴钢板防护罩批发价格...
  8. html最新的版本是多少,HTML5之前的版本是什么?
  9. html5 微格式,HTML5抢鲜:微格式及相关的属性名称。
  10. Dijkstra(迪杰斯特拉)算法简介