通知设置 新通知
PHP中级程序员常见面试题
面试 • zkbhj 发表了文章 • 0 个评论 • 1749 次浏览 • 2017-02-15 10:08
答: 1、$a="http://www.test.com.cn/abc/de/fg.php?id=1";
2、$b=parse_url($a);
3、Echosubstr($b['path'],strpos($b['path'],'.')); 或者:
4、Echoend(explode('.',$b['path']));2
描述一下大流量高并发量网站的解决方案
答: 1、确认服务器硬件是否足够支持当前的流量。
2、使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库。
3、禁止外部的盗链。
4、外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文件盗链,目前可以简单的通过refer来控制盗 链,apache自己就可以通过配置来禁止盗链。
5、控制大文件的下载。 大文件的下载会占用很大的流量,对于非SCSI硬盘来说会消耗,使得网站响应能力下降。
6、使用不同的主机分流主要流量
7、使用流量统计软件。 在网站上安装一个流量统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化。
8、分库分表。
9、Sphinx全文索引引擎。
如何设计或配置Mysql,才能达到高效使用的目的。
答:
1、数据库设计方面,设计结构良好的数据库,允许部分数据冗余。 选取最适用的字段属性,尽可能把字段设置为NOTNULL,这样在查询的时候,数据库不用去比较NULL值。
2、系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,集群,数据库查询和写入分开。 写高效sql语句,以提高效率。使用连接(join)来代替子查询使用联合(union)来代替手动创建的临时表所得皆必须,只从数据库取必须的数据。必 要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。
使用事务使用外键使用索引24.如何进行防SQL注 入?
答:
1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等或者通过系统函 数:addslashes(需要被过滤的内容)来进行过滤。
2、在PHP配置文件中Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使 用$user可以接收表单的值。
3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号
4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的
5、对于常用的方法加以封装,避免直接暴漏SQL语句
6、开启PHP安全模式Safe_mode=on;
7、打开magic_quotes_gpc来防止SQL注入 Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重 大作用。因此开启:magic_quotes_gpc=on;
8、控制错误信息关闭错误提示信息,将错误信息写到系统日志。
9、使用mysqli或pdo预处理。
用PHP写出一个安全的用户登录系统需要注意哪些方面。
答:
1、密码要使用MD5(密码+字符串)进行加 密。
2、登录表单的名称不要跟数据库字段一样,以免暴漏表字段。
3、用户表的表名、字段名、密码尽量用不容易被猜到的。
4、要使用验证码验证登陆,以防止 暴力破解。
5、验证提交的数据是不是来自本网站。
6、登录后台处理代码数据库部分使用预处理,做好过滤,防止sql注入。
使用过哪些PHP框架。试 描述其优劣点。
答:
1、BroPHP框架:优点:轻量级学习型框架,配置简单,操作简单,容易上手,提供了比较全面的文档。缺点:
2、ThinkPHP框 架:优点:功能比较全面,配置相对比较简单,操作相对比较简单,有很多使用示例程序。缺点:提供的操作方法太多,新手不知如何选择,文档不够全面。
用过哪些版本控制工具?
答:使用过SVN版本控制器。
输出为Mozilla/4.0(compatible;MSIE5.01;Window NT 5.0)时,可能的输出语句是:B
A.$_SERVER['HTTP_USER_AGENT_TYPE'];
B. $_SERVER['HTTP_USER_AGENT'];
C. $_SERVER['USER_AGENT'];
D. $_SERVER['AGENT'];
下面功能PHP无法实现的是:D
A. 服务器端脚本运行
B. 命令行脚本运行
C. 客户端图形界面(GUI)程序
D. 浏览器端执行DOM操作
下面说法不正确的是:C
A. PHP有四种标量类型:布尔型(boolean),整型(integer),浮点型(float),字符串(string)
B. 浮点型(float)与双精度型(double)是同一种类型
C. 符合类型包括:数组(array),对象(object),资源(resource)
D. 伪类型:混合型(mixed),数字型(number),回调(callback)
下面不是PHP语法的组成部分的函数是:AD
A. array B. eval C. each D. list
执行下面的代码的结果是什么?A
A. boolean
B. boolean0
C. booleanFALSE
D. booleanfalse
SESSION与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?
答:
1、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的 页面不能看做是同一个用户。
2、SESSION保存在服务器端,COOKIE保存在客户端,SESSION依赖COOKIE进行传输,如果COOKIE被 禁用了,SESSION将不能继续使用。
HTTP状态中302、403、 500代码含义?
答:
300重定向、403服务器拒绝访问、500服务器内部错误。
Linux 下建立压缩包,解压缩包的命令。
答:
1、压缩:gzip 、tar -cvfz、zip、bzip22、解压:gunzip、tar -zxvf、unzip、bunzip2
$a=3;$b=4; if($a||$b=5){ ||或和|的区别 echo 'todo'; } $b的值是(a):
A a. 4; b. 5; c. 3; d. false
什么是面向对象?主要特征是什么?
答:
1、面向对象是程序的一种设计方式,它利于提高程序的重用性,是程序结构更加清晰。
2、主要特征:封装、继承、多态。 查看全部
答: 1、$a="http://www.test.com.cn/abc/de/fg.php?id=1";
2、$b=parse_url($a);
3、Echosubstr($b['path'],strpos($b['path'],'.')); 或者:
4、Echoend(explode('.',$b['path']));2
描述一下大流量高并发量网站的解决方案
答: 1、确认服务器硬件是否足够支持当前的流量。
2、使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库。
3、禁止外部的盗链。
4、外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文件盗链,目前可以简单的通过refer来控制盗 链,apache自己就可以通过配置来禁止盗链。
5、控制大文件的下载。 大文件的下载会占用很大的流量,对于非SCSI硬盘来说会消耗,使得网站响应能力下降。
6、使用不同的主机分流主要流量
7、使用流量统计软件。 在网站上安装一个流量统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化。
8、分库分表。
9、Sphinx全文索引引擎。
如何设计或配置Mysql,才能达到高效使用的目的。
答:
1、数据库设计方面,设计结构良好的数据库,允许部分数据冗余。 选取最适用的字段属性,尽可能把字段设置为NOTNULL,这样在查询的时候,数据库不用去比较NULL值。
2、系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,集群,数据库查询和写入分开。 写高效sql语句,以提高效率。使用连接(join)来代替子查询使用联合(union)来代替手动创建的临时表所得皆必须,只从数据库取必须的数据。必 要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。
使用事务使用外键使用索引24.如何进行防SQL注 入?
答:
1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等或者通过系统函 数:addslashes(需要被过滤的内容)来进行过滤。
2、在PHP配置文件中Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使 用$user可以接收表单的值。
3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号
4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的
5、对于常用的方法加以封装,避免直接暴漏SQL语句
6、开启PHP安全模式Safe_mode=on;
7、打开magic_quotes_gpc来防止SQL注入 Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重 大作用。因此开启:magic_quotes_gpc=on;
8、控制错误信息关闭错误提示信息,将错误信息写到系统日志。
9、使用mysqli或pdo预处理。
用PHP写出一个安全的用户登录系统需要注意哪些方面。
答:
1、密码要使用MD5(密码+字符串)进行加 密。
2、登录表单的名称不要跟数据库字段一样,以免暴漏表字段。
3、用户表的表名、字段名、密码尽量用不容易被猜到的。
4、要使用验证码验证登陆,以防止 暴力破解。
5、验证提交的数据是不是来自本网站。
6、登录后台处理代码数据库部分使用预处理,做好过滤,防止sql注入。
使用过哪些PHP框架。试 描述其优劣点。
答:
1、BroPHP框架:优点:轻量级学习型框架,配置简单,操作简单,容易上手,提供了比较全面的文档。缺点:
2、ThinkPHP框 架:优点:功能比较全面,配置相对比较简单,操作相对比较简单,有很多使用示例程序。缺点:提供的操作方法太多,新手不知如何选择,文档不够全面。
用过哪些版本控制工具?
答:使用过SVN版本控制器。
输出为Mozilla/4.0(compatible;MSIE5.01;Window NT 5.0)时,可能的输出语句是:B
A.$_SERVER['HTTP_USER_AGENT_TYPE'];
B. $_SERVER['HTTP_USER_AGENT'];
C. $_SERVER['USER_AGENT'];
D. $_SERVER['AGENT'];
下面功能PHP无法实现的是:D
A. 服务器端脚本运行
B. 命令行脚本运行
C. 客户端图形界面(GUI)程序
D. 浏览器端执行DOM操作
下面说法不正确的是:C
A. PHP有四种标量类型:布尔型(boolean),整型(integer),浮点型(float),字符串(string)
B. 浮点型(float)与双精度型(double)是同一种类型
C. 符合类型包括:数组(array),对象(object),资源(resource)
D. 伪类型:混合型(mixed),数字型(number),回调(callback)
下面不是PHP语法的组成部分的函数是:AD
A. array B. eval C. each D. list
执行下面的代码的结果是什么?A
A. boolean
B. boolean0
C. booleanFALSE
D. booleanfalse
SESSION与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?
答:
1、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的 页面不能看做是同一个用户。
2、SESSION保存在服务器端,COOKIE保存在客户端,SESSION依赖COOKIE进行传输,如果COOKIE被 禁用了,SESSION将不能继续使用。
HTTP状态中302、403、 500代码含义?
答:
300重定向、403服务器拒绝访问、500服务器内部错误。
Linux 下建立压缩包,解压缩包的命令。
答:
1、压缩:gzip 、tar -cvfz、zip、bzip22、解压:gunzip、tar -zxvf、unzip、bunzip2
$a=3;$b=4; if($a||$b=5){ ||或和|的区别 echo 'todo'; } $b的值是(a):
A a. 4; b. 5; c. 3; d. false
什么是面向对象?主要特征是什么?
答:
1、面向对象是程序的一种设计方式,它利于提高程序的重用性,是程序结构更加清晰。
2、主要特征:封装、继承、多态。
关于面试的一些总结
面试 • zkbhj 发表了文章 • 0 个评论 • 2332 次浏览 • 2017-02-15 10:04
面试应该善于发现他所善长的东西,还有你得清楚你的项目具体需要哪些能力的人(比如在一个普通团队项目中,我非常看重一个人对一个需求解耦/框架/模式的理解,我可不愿意要一个进来把我的代码搞乱套的人).而不是他知道多少晦涩的语法和他不曾知道的技巧。
面试应该善于发现他所善长的东西,还有你得清楚你的项目具体需要哪些能力的人(比如在一个普通团队项目中,我非常看重一个人对一个需求解耦/框架/模式的理解,我可不愿意要一个进来把我的代码搞乱套的人).而不是他知道多少晦涩的语法和他不曾知道的技巧。
产品文档PRD的正确打开方式总结
总结 • zkbhj 发表了文章 • 0 个评论 • 1552 次浏览 • 2016-12-23 15:20
第一步、理解需求
问三个为什么?为什么这么做?解决什么问题?对业务有什么影响?确保理解需求得目标目的和价值;
第二步、心中有方案
整体技术方案思路产出和前端的交互方案,是spa还是mpa?是否前后端分离;和后端系统的交互方案;
第三步、产出详细技术方案
先产出接口文档,保证其他团队使用;先产出假接口;方案设计(db,缓存,cdn);
第四步、码代码实现
代码分层建设,mvc分层开发;
第五步、验证结果
提测之前确保自测通过自测通过以后,读prd,确保一致;
查看全部
第一步、理解需求
- 问三个为什么?为什么这么做?解决什么问题?对业务有什么影响?
- 确保理解需求得目标目的和价值;
第二步、心中有方案
- 整体技术方案思路产出
- 和前端的交互方案,是spa还是mpa?是否前后端分离;
- 和后端系统的交互方案;
第三步、产出详细技术方案
- 先产出接口文档,保证其他团队使用;
- 先产出假接口;
- 方案设计(db,缓存,cdn);
第四步、码代码实现
- 代码分层建设,mvc分层开发;
第五步、验证结果
- 提测之前确保自测通过
- 自测通过以后,读prd,确保一致;
如何提高工作学习效率之:番茄工作法
总结 • zkbhj 发表了文章 • 0 个评论 • 1490 次浏览 • 2016-12-22 15:24
番茄工作法是简单易行的时间管理方法,是由弗朗西斯科·西里洛于1992年创立的一种相对于GTD更微观的时间管理方法。使用番茄工作法,选择一个待完成的任务,将番茄时间设为25分钟,专注工作,中途不允许做任何与该任务无关的事,直到番茄时钟响起,然后在纸上画一个X短暂休息一下(5分钟就行),每4个番茄时段多休息一会儿。番茄工作法极大地提高了工作的效率,还会有意想不到的成就感。
2、遵循的原则:
1)一个番茄时间(25分钟)不可分割,不存在半个或一个半番茄时间。
2)一个番茄时间内如果做与任务无关的事情,则该番茄时间作废。
3)永远不要在非工作时间内使用《番茄工作法》。(例如:用3个番茄时间陪儿子下的棋、用5个番茄时间钓鱼,等等。)
4)不要拿自己的番茄数据与他人的番茄数据比较。
5)番茄的数量不可能决定任务最终的成败。
6)必须有一份适合自己的作息时间表。
3、使用方法:
1、每天开始的时候规划今天要完成的几项任务,将任务逐项写在列表里(或记在软件的清单里)
2、设定你的番茄钟(定时器、软件、闹钟等),时间是25分钟。
3、开始完成第一项任务,直到番茄钟响铃或提醒(25分钟到)。
4、停止工作,并在列表里该项任务后画个X。
5、休息3~5分钟,活动、喝水、方便等等。
6、开始下一个番茄钟,继续该任务。一直循环下去,直到完成该任务,并在列表里将该任务划掉。
7、每四个番茄钟后,休息25分钟。
在某个番茄钟的过程里,如果突然想起要做什么事情——
a.非得马上做不可的话,停止这个番茄钟并宣告它作废(哪怕还剩5分钟就结束了),去完成这件事情,之后再重新开始同一个番茄钟;
b.不是必须马上去做的话,在列表里该项任务后面标记一个逗号(表示打扰),并将这件事记在另一个列表里(比如叫“计划外事件”),然后接着完成这个番茄钟。
4、番茄工作法是一套简单的工具和流程,其优点如下:
1、减轻时间焦虑
2、提升集中力和注意力,减少中断
3、增强决策意识
4、唤醒激励和持久激励
5、巩固达成目标的决心
6、完善预估流程,精确地保质保量
7、改进工作学习流程
8、强化决断力,快刀斩乱麻 查看全部
番茄工作法是简单易行的时间管理方法,是由弗朗西斯科·西里洛于1992年创立的一种相对于GTD更微观的时间管理方法。使用番茄工作法,选择一个待完成的任务,将番茄时间设为25分钟,专注工作,中途不允许做任何与该任务无关的事,直到番茄时钟响起,然后在纸上画一个X短暂休息一下(5分钟就行),每4个番茄时段多休息一会儿。番茄工作法极大地提高了工作的效率,还会有意想不到的成就感。
2、遵循的原则:
1)一个番茄时间(25分钟)不可分割,不存在半个或一个半番茄时间。
2)一个番茄时间内如果做与任务无关的事情,则该番茄时间作废。
3)永远不要在非工作时间内使用《番茄工作法》。(例如:用3个番茄时间陪儿子下的棋、用5个番茄时间钓鱼,等等。)
4)不要拿自己的番茄数据与他人的番茄数据比较。
5)番茄的数量不可能决定任务最终的成败。
6)必须有一份适合自己的作息时间表。
3、使用方法:
1、每天开始的时候规划今天要完成的几项任务,将任务逐项写在列表里(或记在软件的清单里)
2、设定你的番茄钟(定时器、软件、闹钟等),时间是25分钟。
3、开始完成第一项任务,直到番茄钟响铃或提醒(25分钟到)。
4、停止工作,并在列表里该项任务后画个X。
5、休息3~5分钟,活动、喝水、方便等等。
6、开始下一个番茄钟,继续该任务。一直循环下去,直到完成该任务,并在列表里将该任务划掉。
7、每四个番茄钟后,休息25分钟。
在某个番茄钟的过程里,如果突然想起要做什么事情——
a.非得马上做不可的话,停止这个番茄钟并宣告它作废(哪怕还剩5分钟就结束了),去完成这件事情,之后再重新开始同一个番茄钟;
b.不是必须马上去做的话,在列表里该项任务后面标记一个逗号(表示打扰),并将这件事记在另一个列表里(比如叫“计划外事件”),然后接着完成这个番茄钟。
4、番茄工作法是一套简单的工具和流程,其优点如下:
1、减轻时间焦虑
2、提升集中力和注意力,减少中断
3、增强决策意识
4、唤醒激励和持久激励
5、巩固达成目标的决心
6、完善预估流程,精确地保质保量
7、改进工作学习流程
8、强化决断力,快刀斩乱麻
新发布流程执行流程
总结 • zkbhj 发表了文章 • 0 个评论 • 1516 次浏览 • 2016-09-06 18:15
1:把tag分支的代码保持最新;
2:到ci.ziroom.com上打包;
web->projectName -> Build with Parameters -> SRC_BRANCH里填上自己的分支名 -> 打包,得到id #44
3:到http://os.ziroom.com/o/ 部署代码;
部署代码 -> 选择相应的项目环境点击发布 --> 选择刚刚打包的版本 -> 点击顶部部署 -> ok
4:给测试进行测试,如果测试通过。这个包就可以变成可上线的包(需要测试操作);
5:上线完成后,将该分支merge到master上。
6:完成。 查看全部
1:把tag分支的代码保持最新;
2:到ci.ziroom.com上打包;
web->projectName -> Build with Parameters -> SRC_BRANCH里填上自己的分支名 -> 打包,得到id #44
3:到http://os.ziroom.com/o/ 部署代码;
部署代码 -> 选择相应的项目环境点击发布 --> 选择刚刚打包的版本 -> 点击顶部部署 -> ok
4:给测试进行测试,如果测试通过。这个包就可以变成可上线的包(需要测试操作);
5:上线完成后,将该分支merge到master上。
6:完成。