PHP中级程序员常见面试题
来源:互联网 发布:淘宝淘金币在哪看 编辑:程序博客网 时间:2024/05/16 11:16
1)、写一个函数,从一个标准url里取出文件的扩展名,需要取出php或.php
<?php$a="http://www.test.com.cn:88/abc/de/fg.php?id=1";$b=parse_url($a);//解析 URL,以数组的方式返回其组成部分var_dump($b);echo '<br>';// 方法一echo substr($b['path'],strpos($b['path'],'.'));echo '<br>';// 方法二$path_array = explode('.',$b['path']);echo end($path_array);参考函数:
parse_url
substr
strpos
explode
end
2)、描述一下大流量高并发量网站的解决方案
首先,确认服务器硬件是否足够支持当前的流量 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻底解决性能问题。
其次,优化数据库访问前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站, 静态化往往不能满足某些功能。
缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用 这些文件,而不必再访问数据库,WordPress和Z-Blog都大 量使用这种缓存技术 如果确实无法避免对数据库的访问,那么可以尝试优化数据库的查询SQL.避免使用 Select * from这样的语句,每次查询只返回自己需要的结果,避免短时间内的大,尽量做到"所查即所得" ,遵循以小表为主,附表为辅,查询条件先索引,先小后大的原则,提高查询效率.量SQL查询。
禁止外部的盗链 外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对于自身的图片或者文件盗链,好在目前可以简单地通过refer来控制盗 链,Apache自 己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当然,伪造refer也可以通过代码来实现盗 链,不过目前蓄意伪造refer盗链的还不多, 可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。
控制大文件的下载。 大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗 CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载,如果需要提供,建议将大文件放在另外一台服务器上。
3)、如何设计或配置Mysql,才能达到高效使用的目的
1、数据库设计方面,设计结构良好的数据库,允许部分数据冗余。 选取最适用的字段属性,尽可能把字段设置为NOT NULL,这样在查询的时候,数据库不用去比较NULL值。
2、系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,集群,数据库查询和写入分开。 写高效sql语句,以提高效率。使用连接(join)来代替子查询使用联合(union)来代替手动创建的临时表所得皆必须,只从数据库取必须的数据。必要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。
4)、如何进行防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预处理。
5)、用PHP写出一个安全的用户登录系统需要注意哪些方面。
1、密码要使用MD5(密码+字符串)进行加 密。
2、登录表单的名称不要跟数据库字段一样,以免暴漏表字段。
3、用户表的表名、字段名、密码尽量用不容易被猜到的。
4、要使用验证码验证登陆,以防止 暴力破解。
5、验证提交的数据是不是来自本网站。
6、登录后台处理代码数据库部分使用预处理,做好过滤,防止sql注入。
6)、$_SERVER
$indicesServer = array('PHP_SELF', 'argv', 'argc', 'GATEWAY_INTERFACE', 'SERVER_ADDR', 'SERVER_NAME', 'SERVER_SOFTWARE', 'SERVER_PROTOCOL', 'REQUEST_METHOD', 'REQUEST_TIME', 'REQUEST_TIME_FLOAT', 'QUERY_STRING', 'DOCUMENT_ROOT', 'HTTP_ACCEPT', 'HTTP_ACCEPT_CHARSET', 'HTTP_ACCEPT_ENCODING', 'HTTP_ACCEPT_LANGUAGE', 'HTTP_CONNECTION', 'HTTP_HOST', 'HTTP_REFERER', 'HTTP_USER_AGENT', 'HTTPS', 'REMOTE_ADDR', 'REMOTE_HOST', 'REMOTE_PORT', 'REMOTE_USER', 'REDIRECT_REMOTE_USER', 'SCRIPT_FILENAME', 'SERVER_ADMIN', 'SERVER_PORT', 'SERVER_SIGNATURE', 'PATH_TRANSLATED', 'SCRIPT_NAME', 'REQUEST_URI', 'PHP_AUTH_DIGEST', 'PHP_AUTH_USER', 'PHP_AUTH_PW', 'AUTH_TYPE', 'PATH_INFO', 'ORIG_PATH_INFO') ;echo '<table cellpadding="10">' ;foreach ($indicesServer as $arg) { if (isset($_SERVER[$arg])) { echo '<tr><td>'.$arg.'</td><td>' . $_SERVER[$arg] . '</td></tr>' ; } else { echo '<tr><td>'.$arg.'</td><td>-</td></tr>' ; }}echo '</table>' ;
7)、下面说法不正确的是:C
A. PHP有四种标量类型:布尔型(boolean),整型(integer),浮点型(float),字符串(string)
B. 浮点型(float)与双精度型(double)是同一种类型
C. 符合类型包括:数组(array),对象(object),资源(resource)
D. 伪类型:混合型(mixed),数字型(number),回调(callback)
参考:
http://blog.csdn.net/snn1410/article/details/7728971
8)SESSION与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?
1、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的 页面不能看做是同一个用户。
2、SESSION保存在服务器端,COOKIE保存在客户端,SESSION依赖COOKIE进行传输,如果COOKIE被 禁用了,SESSION将不能继续使用。
9)HTTP状态中302、403、 500代码含义?
300重定向、403服务器拒绝访问、500服务器内部错误。
10)Linux 下建立压缩包,解压缩包的命令。
压缩:gzip 、tar -cvfz、zip、bzip22、解压:gunzip、tar -zxvf、unzip、bunzip2
- PHP中级程序员常见面试题
- PHP中级程序员常见面试题
- php中级面试题
- 常见程序员面试题
- PHP常见面试题
- 常见php面试题
- php常见面试题
- php常见面试题
- 【面试秘籍】PHP中级面试题
- PHP程序员面试题
- PHP程序员面试题
- PHP程序员面试题
- PHP程序员面试题
- Javascript程序员常见面试题
- java中级面试题
- iOS 中级面试题
- PHP程序员常用面试题
- 腾讯php程序员面试题
- 用安卓发送有序广播
- 社交系统ThinkSNS+ alpha.2 版本发布,快来看看都有些什么【研发日记六】
- Unity3D 获取与设置对象Transform组件下的position,rotation
- hello 大家好
- 工厂模式
- PHP中级程序员常见面试题
- Linux部署maven项目
- JAVA泛型通配符 extends 和 super
- Android常用控件(按钮、选择框、日期时间控件)
- ubuntu配置tomcat7(已测有效)
- 程序学3DMax之自动展UV
- 16年程序员平均工资122478元_你拖后腿了没?
- datatable对某一列的值进行模糊或非模糊搜索
- 习题27