PHP面试题总汇--整理完整版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-- LAMP 40 -1. 什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式, 它利于提高 程序的重用性,使程序结构更加清晰。主要特征: 封装、继承、多态。 2. SESSION 与 COOKIE 的区别是什么,请从协 议,产生的原因与作用说明? 1、http 无状态协议,不能区分用户是否是从 同一个网站上来的,同一个用户请求不同的页面不 能看做是同一个用户。 2、SESSION 存储在服务器端,COOKIE 保存 在客户端。Session 比较安全,cookie 用某些手段可 以修改,不安全。Session 依赖于 cookie 进行传递。 禁用 cookie 后,session 不能正常使用。Session 的 缺点:保存在服务器端,每次读取都从服务器进行 Session 保存在服务器 读取, 对服务器有资源消耗。 端的文件或数据库中,默认保存在文件中,文件路 径由 php 配置文件的 session.save_path 指定。 Session 文件是公有的。 3. HTTP 状态中 302、403、 500 代码含义? 一二三四五原则: 一. 消息系列 二 成功系列 三. 重定向系列 四. 请求错求的内容已转移到新位 置 403:禁止访问 500:服务器内部错误 401 代表未 授权。 4. Linux 下建立压缩包,解压缩包的命令 Tar.gz: 打包: tar czf file.tar.gz file.txt 解压: tar xzf file.tar.gz Bz2: 打包: bzip2 [-k] 文件 解压: bunzip2 [-k] 文件 Gzip(只对文件,不保留原文件) 打包: gzip file1.txt 解压: gunzip file1.txt.gz Zip: -r 对目录 打包: zip file1.zip file1.txt 解压: unzip file1.zip 5. 请写出数据类型(int char varchar datetime text) 的意思;请问 varchar 和 char 有什么区别? Int 整数 char 定长字符 Varchar 变长字符 Datetime 日期时间型 Text 文本型 Varchar 与 char 的区别 char 是固定长度的字符类型,分配多 少空间,就占用多长空间。 Varchar 是可变长度的 字符类型,内容有多大就占用多大的空间,能有效 节省空间。 由于 varchar 类型是可变的,所以在数 据长度改变的时,服务器要进行额外的操作,所以 效率比 char 类型低。 6. MyISAM 和 InnoDB 的基本区别?索引结构 如何实现? MyISAM 类型不支持事务,表锁,易产生碎 片,要经常优化,读写速度较快,而 InnoDB 类型 支持事务,行锁,有崩溃恢复能力。读写速度比 MyISAM 慢。 创建索引:alert table tablename add index (`字 段名`) 7. 不使用 cookie 向客户端发送一个 cookie. 理解:session_start()开启时,生成一个常 量 SID,当 COOKIE 开启时,这个常量为空,当 COOKIE 关闭时,这个常量中存储了 PHPSESSID 的值。通过在 URL 后加一个 SID 参数来传递 SESSIONID 的值,从而使客户端页面可以使用 SESSION 里面的值。 当客户端开启 COOKIE 和服 -1务器端开启 SESSION 时。 浏览器第一次请求,服 务器会向浏览器端发送一个 COOKIE 里面存储 SESSIONID. 当浏览器第二次请求时,会把已存在 8. isset() 和 empty() 区别 Isset 判断变量是否存在, 可以传入多个变量, 若其中一个变量不存在则返回假,empty 判断变量 是否为空为假,只可传一个变量,如果为空为假则 返回真。 9. 如何在页面之间传递变量(至少两种方式) ? GET,POST,COOKIE,SESSION,隐藏表单 1. 写出匹配 URL 的正则表达式. ‘/^(https?|ftps?):\/\/(www)\.([^\.\/]+)\.(com|cn|org)(\/[\ w-\.\/\?\%\&\=]*)?/i’ 2. 请写出常见的排序算法,并用 PHP 实现冒泡排 序, 将数组$a = array()按照从小到大的方式进行排 序。 常见的排序算法: 冒泡排序法、快速排序法、简单 选择排序法、堆排序法、直接插入排序法、希尔排 序法、合并排序法。 冒泡排序法的基本思想是:对待排序记录关键字从 后往前(逆序)进行多遍扫描,当发现相邻两个关 键字的次序与排序要求的规则不符时,就将这两个 记录进行交换。这样,关键字较小的记录将逐渐从 后面向前面移动,就象气泡在水中向上浮一样,所 以该算法也称为气泡排序法。 // 冒泡排序法 Function mysort($arr){ For($i=0; $i<count($arr); $i++){ For($j=0; $j<count($arr)-1-$i; $j++){ If($arr[$j] > $arr[$j+1]){ $tmp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$tmp; } } } Return $arr; } $arr=array(3,2,1); print_r(mysort($arr)); 3. 请说明 PHP 中传值与传引用的区别。 什么时候 传值什么时候传引用? 按值传递: 函数范围内对值的任何改变在函数 外部都会被忽略 按引用传递: 函数范围内对值的任何改变在函 数外部也能反映出这些修改 优缺点:按值传递时,php 必须复制值。特别 是对于大型的字符串和对象来说,这将会是一个代 价很大的操作。按引用传递则不需要复制值,对于 性能提高很有好处。 在 PHP 中 error_reporting 这个函数有什么作用? 设置 PHP 的报错级别并返回当前级别。 请用正则表达式(Regular Expression)写一个函 数验证电子邮件的格式是否正确。 if(isset($_POST['action']) && $_POST['action']==’ submitted’){ $email=$_POST['email']; if(!preg_match( “/^[0-9a-zA-Z-]+@[0-9a-zA-Z-] +(\.[0-9a-zA-Z-]+){1,3}$/”,$email)){ echo “电子邮件检测失败”; }else{ echo “电子邮件检测成功”; } }
相关文档
最新文档