php程序员面试必知基础知识
2018-02-09 11:21
344 查看
毕业后一直待到现在的公司,一个地方待久了,容易进入舒适区,看不到自己的不足,斗志也会被消磨。所以,最近闲来无事,趁着晚上的工夫出去面试了几家公司。还别说,事实表明,我对php的一些基础知识理解不深入,掌握不牢靠,也可以说是在开发过程中没有意识到去掌握这些知识。
在这里,我就把自己整理的认为一些比较重要的问题分享到这里,希望对各位同学有帮助。如果有新货的话,我会不定时更新的吆~~~
2.fast-cgi,cgi,php-fpm
cgi:通用网关接口,httpserver在接收到请求后,会把请求分发给php解释器,请求处理结束后,php解释器将数据返回给httpserver,由server将结果返回给用户。其中cgi规定了传递的数据和格式。普通的cgi在请求过来时,会重新fork一个新进程,先根据php.ini文件加载环境,处理完成后结束运行。
fast-cgi:起一个主进程,预先解析配置文件,加载执行环境环境,然后fork多个进程。请求过来后分发给worker进程,可根据情况起不同数量的worker等待。
php-fpm:实现了fast-cgi协议的程序,可以对fast-cgi进程进行管理
3.php数组实现,哈希表
通过hash表实现,hash值冲突解决方案是链表
4.php的规范
psr-0 自动加载
psr-1 基础编码标准
psr-2 代码风格
psr-3 日志接口
psr-4 psr-0自动加载补充
5.smarty模板引擎为例,如何渲染模板
把模板文件中的自定义标签替换为php代码,编译成编译文件
第二次请求时,如果原文件没有修改(通过判断更改时间的变化),直接访问编译文件。
可以启用缓存,启用缓存后,判断缓存是否过期,如果过期,重新编译。
filectime 文件inode修改日期
filemtime 文件上次修改日期
fileatime 上次访问日期
6.restful
GET 获取数据
POST 修改数据
PUT 上传数据
DELETE 删除数据
OPTIONS特定资源支持的请求方法
HEAD GET类似,不用返回响应体
TRACE 测试
优化嵌套查询
优化使用索引:
or语句的每个条件都加索引
使用use index或force index,指定使用某个索引
子查询和join的区别
子查询需要把内层查询的结果作为外层查询的条件,它会先把内层查询的结果保存到临时表,查询结束后销毁临时表。比join查询多了临时表的创建和删除操作。
2.mysql索引
聚簇索引:数据和索引在同一个文件,innodb
非聚簇索引:数据和索引在不同的文件,myisam,多了一次对数据读取的i/o,效率较低。
主键使用b-tree索引
b-tree和hash区别
索引文件较大,一般不加载到内存中,而是存储到磁盘上。而磁盘的i/o会显著影响速度,所以,查询尽量减少磁盘的i/o操作。
b-tree:对于排序,区间查询友好。
hash的问题:1)只能应用到= != in操作中 2)对于排序操作无法优化 3)在多个值产生同一个hash值时,因为要多次i/o操作,查询效率会变低。
2.css
3.javascript选择器
2.负载均衡实现
在这里,我就把自己整理的认为一些比较重要的问题分享到这里,希望对各位同学有帮助。如果有新货的话,我会不定时更新的吆~~~
php
1.服务器信息获取uri:$_SERVER['REQUEST_URI'] ip:$_SERVER['REMOTE_ADDR']
2.fast-cgi,cgi,php-fpm
cgi:通用网关接口,httpserver在接收到请求后,会把请求分发给php解释器,请求处理结束后,php解释器将数据返回给httpserver,由server将结果返回给用户。其中cgi规定了传递的数据和格式。普通的cgi在请求过来时,会重新fork一个新进程,先根据php.ini文件加载环境,处理完成后结束运行。
fast-cgi:起一个主进程,预先解析配置文件,加载执行环境环境,然后fork多个进程。请求过来后分发给worker进程,可根据情况起不同数量的worker等待。
php-fpm:实现了fast-cgi协议的程序,可以对fast-cgi进程进行管理
3.php数组实现,哈希表
通过hash表实现,hash值冲突解决方案是链表
4.php的规范
psr-0 自动加载
psr-1 基础编码标准
psr-2 代码风格
psr-3 日志接口
psr-4 psr-0自动加载补充
5.smarty模板引擎为例,如何渲染模板
把模板文件中的自定义标签替换为php代码,编译成编译文件
第二次请求时,如果原文件没有修改(通过判断更改时间的变化),直接访问编译文件。
可以启用缓存,启用缓存后,判断缓存是否过期,如果过期,重新编译。
filectime 文件inode修改日期
filemtime 文件上次修改日期
fileatime 上次访问日期
6.restful
GET 获取数据
POST 修改数据
PUT 上传数据
DELETE 删除数据
OPTIONS特定资源支持的请求方法
HEAD GET类似,不用返回响应体
TRACE 测试
二 mysql
1.mysql的sql语句优化优化嵌套查询
优化使用索引:
or语句的每个条件都加索引
使用use index或force index,指定使用某个索引
子查询和join的区别
子查询需要把内层查询的结果作为外层查询的条件,它会先把内层查询的结果保存到临时表,查询结束后销毁临时表。比join查询多了临时表的创建和删除操作。
2.mysql索引
聚簇索引:数据和索引在同一个文件,innodb
非聚簇索引:数据和索引在不同的文件,myisam,多了一次对数据读取的i/o,效率较低。
主键使用b-tree索引
b-tree和hash区别
索引文件较大,一般不加载到内存中,而是存储到磁盘上。而磁盘的i/o会显著影响速度,所以,查询尽量减少磁盘的i/o操作。
b-tree:对于排序,区间查询友好。
hash的问题:1)只能应用到= != in操作中 2)对于排序操作无法优化 3)在多个值产生同一个hash值时,因为要多次i/o操作,查询效率会变低。
三 前端
1.html2.css
3.javascript选择器
四 nginx服务器
1.css js font等资源文件的加载2.负载均衡实现
proxy pass http://serverhost/ 轮询 upstream serverhost { server 1111; server 2222; } 按权重 upstream serverhost{ server 1111 weight 30; server 2222 weight 70; } ip hash:可解决session问题 upstream serverhost{ ip_hash; server 1111; server 2222; } fair:第3方mod upstream serverhost{ server 1111; server 2222; fair; } url_hash:第3方mod upstream serverhost{ server 1111; server 2222; hash $request_uri; hash_method crc32; }
相关文章推荐
- 主题:jQuery必知必熟基础知识
- C/C++程序员必知之内存基础知识
- 学习JavaScript必知的一些基础知识
- IOS 编程基础知识 [IOS]编程必知
- iPhone应用开发必知必会的三大基础知识
- jQuery必知必熟基础知识
- Java 基础知识点(必知必会其一)
- [转]jQuery必知必熟基础知识
- 安卓开发基础新手必知java知识之接口与抽象类的区别
- 入门redis必知的基础知识
- IOS 编程基础知识 [IOS]编程必知
- jQuery必知必熟基础知识
- 新手软件测试基础知识学习必知
- 新手必知linux基础知识
- Java 基础知识点(必知必会其二)
- jQuery必知必熟基础知识
- jQuery必知必熟基础知识
- 入行手游必知的8项基础知识
- jQuery必知必熟基础知识
- jQuery必知必熟基础知识