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);