在网上看到一些高级php 的面试题目。。

闲来无事,搞了一些答案。。。可能不是很全面,留这以后备用吧。

一. 基本知识点

1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。

200 : 请求成功,请求的数据随之返回。

301 : 永久性重定向。

302 : 暂时行重定向。

401 : 当前请求需要用户验证。

403 : 服务器拒绝执行请求,即没有权限。

404 : 请求失败,请求的数据在服务器上未发现。

500 : 服务器错误。一般服务器端程序执行错误。

503 : 服务器临时维护或过载。这个状态时临时性的。

1.2 Include require include_once require_once 的区别.

处理失败方式不同:

require 失败时会产生一个致命级别错误,并停止程序运行。

include 失败时只产生一个警告级别错误,程序继续运行。

include_once/require_once和include/require 处理错误方式一样,

唯一区别在于当所包含的文件代码已经存在时候,不在包含。

1.3 PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等等。

1.4 HEREDOC介绍

一种定义字符串的方法。

结构:

<<

然后是一个新行。接下来是字符串 本身,

最后要用前面定义的标识符作为结束标志(单独一行)

注意:

标识符的命名也要像其它标签一样遵守PHP的规则:

只能包含字母、数字和下划线,并且必须以字母和下划线作为开头

1.5 写出一些php魔幻(术)方法;

__construct() 实例化类时自动调用。

__destruct() 类对象使用结束时自动调用。

__set() 在给未定义的属性赋值的时候调用。

__get() 调用未定义的属性时候调用。

__isset() 使用isset()或empty()函数时候会调用。

__unset() 使用unset()时候会调用。

__sleep() 使用serialize序列化时候调用。

__wakeup() 使用unserialize反序列化的时候调用。

__call() 调用一个不存在的方法的时候调用。

__callStatic() 调用一个不存在的静态方法是调用。

__toString() 把对象转换成字符串的时候会调用。比如 echo。

__invoke() 当尝试把对象当方法调用时调用。

__set_state() 当使用var_export()函数时候调用。接受一个数组参数。

__clone() 当使用clone复制一个对象时候调用。

1.6 一些编译php时的configure 参数

–prefix=/usr/local/php    php安装目录

–with-config-file-path=/usr/local/php/etc 指定php.ini位置

–with-mysql=/usr/local/mysql mysql安装目录,对mysql的支持

–with-mysqli=/usr/local/mysql/bin/mysql_config mysqli文件目录,优化支持

–enable-safe-mode 打开安全模式

–enable-ftp 打开ftp的支持

–enable-zip 打开对zip的支持

–with-bz2 打开对bz2文件的支持

–with-jpeg-dir 打开对jpeg图片的支持

–with-png-dir 打开对png图片的支持

–with-freetype-dir 打开对freetype字体库的支持

–without-iconv关闭iconv函数,种字符集间的转换

–with-libxml-dir 打开libxml2库的支持

–with-xmlrpc 打开xml-rpc的c语言

–with-zlib-dir 打开zlib库的支持

–with-gd 打开gd库的支持

更多可以使用 ./configure help 查看

1.7 向php传入参数的三种方法。

/*

* 方法一 使用$argc $argv

*  在命令行下运行 /usr/local/php/bin/php ./getopt.php -f 123 -g 456

*/

//    if ($argc > 1){

//        print_r($argv);

//    }

/**

* 运行结果

*

sync@MySUSE11:~/web_app/channel3/interface> /usr/local/php/bin/php ./getopt.php -f 123 -g 456

Array

(

[0] => ./getopt.php

[1] => -f

[2] => 123

[3] => -g

[4] => 456

)

*/

/*

* 方法二 使用getopt函数()

*  在命令行下运行 /usr/local/php/bin/php ./getopt.php -f 123 -g 456

*/

//    $options = "f:g:";

//    $opts = getopt( $options );

//    print_r($opts);

/**

* 运行结果

*

sync@MySUSE11:~/web_app/channel3/interface> /usr/local/php/bin/php ./getopt.php -f 123 -g 456

Array

(

[f] => 123

[g] => 456

)

*/

/*

* 方法三 提示用户输入,然后获取输入的参数。有点像C语言

*  在命令行下运行 /usr/local/php/bin/php ./getopt.php

*/

fwrite(STDOUT, "Enter your name: ");

$name = trim(fgets(STDIN));

fwrite(STDOUT, "Hello, $name!");

/**

* 运行结果

*

sync@MySUSE11:~/web_app/channel3/interface> /usr/local/php/bin/php ./getopt.php

Enter your name: francis

Hello, francis!

*/

摘自:http://fangnaichang.blog.sohu.com/209113138.html

1.8 (mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;

int : 数值类型

char : 固定长度字符串类型

varchar : 可变长度字符串类型

datetime : 时期时间类型

text : 文本类型

varchar和char有什么区别:

a. char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。

而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。

b. char 固定长度,所以在处理速度上要比varchar快速很多,但是浪费存储空间,

所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型来实例。

1.9 error_reporting 等调试函数使用

error_reporting() 函数能够在运行时设置php.ini中 error_reporting 指令。

所以可以再程序中随时调节显示的错误级别。

使用此函数时 display_errors必须是打开状态。

1.10 您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?

SVN : http://baike.baidu.com/view/183128.htm

1.11 posix和perl标准的正则表达式区别;

1.12 Safe_mode 打开后哪些地方受限.

启动safe_mode,会对许多PHP函数进行限制,特别是和系统相关的文件打开、命令执行等函数.

所有操作文件的函数将只能操作与脚本UID相同的文件.

1.13 写代码来解决多进程/线程同时读写一个文件的问题。

PHP是不支持多线程的,可以使用php的flock加锁函数实现。

$fp = fopen("/tmp/lock.txt", "w+");

if (flock($fp, LOCK_EX)) { // 进行排它型锁定

fwrite($fp, "Write something here\n");

flock($fp, LOCK_UN); // 释放锁定

} else {

echo "Couldn't lock the file !";

}

fclose($fp);

1.14 写一段上传文件的代码。

upload.html

Send this file:

upload.php

$uploads_dir = '/uploads';

foreach ($_FILES["error"] as $key => $error) {

if ($error == UPLOAD_ERR_OK) {

$tmp_name = $_FILES["tmp_name"][$key];

$name = $_FILES["name"][$key];

move_uploaded_file($tmp_name, "$uploads_dir/$name");

}

}

1.15 Mysql 的存储引擎,myisam和innodb的区别。

a. MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.

b. MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快.

c. InnoDB不支持FULLTEXT类型的索引.

d. InnoDB 中不保存表的具体行数,也就是说,

执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,

但是MyISAM只要简单的读出保存好的行数即可.

e. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

f. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

g. LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,

但是对于使用的额外的InnoDB特性(例如外键)的表不适用.

h. MyISAM支持表锁,InnoDB支持行锁。

摘自:http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html

二. web 架构,安全,项目经验

2.1 介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。

2.2 使用mod_rewrite,在服务器上没有/archivers/567.html这个物理文件时,重定向到index.php?id=567 ,请先打开mod_rewrite.

首先,打开mod_rewrite模块。

其次,http.conf找到以下代码段:

Options FollowSymLinks

AllowOverride None

将其中的:AllowOverride None 改为 AllowOverride All ,重启httpd服务即可。

然后,在项目根目录下简历 .htaccess 文件,填写规则。

参考地址:http://httpd.apache.org/docs/2.2/rewrite/

2.3 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。

b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。

c. mysql库主从读写分离。

d. 找规律分表,减少单表中的数据量提高查询速度。

e。添加缓存机制,比如memcached,apc等。

f. 不经常改动的页面,生成静态页面。

g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

2.4 写出一种排序算法(原理),并说出优化它的方法。

2.5 请简单阐述您最得意的开发之作

2.6 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题

a. 确认服务器是否能支撑当前访问量。

b. 优化数据库访问。参考2.3

c. 禁止外部访问链接(盗链), 比如图片盗链。

d. 控制文件下载。

e. 使用不同主机分流。

f. 使用浏览统计软件,了解访问量,有针对性的进行优化。

2.7 您是否用过模板引擎? 如果有您用的模板引擎的名字是?

Smarty

2.8 请介绍Session的原理,大型网站中Session方面应注意什么?

2.9 测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。

2.10 正则提出一个网页中的所有链接.

2.11 介绍一下常见的SSO(单点登陆)方案(比如dedecms整合discuz的passport)的原理。

2.12 您写过的PHP框架的特点,主要解决什么问题,与其他框架的不同点。

2.13 大型的论坛/新闻文章系统/SNS网站在性能优化上有什么区别?

2.14 相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。

一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。

三. unix/linux 基本使用

3.1 linux下查看当前系统负载信息的一些方法。

3.2 vim的基本快捷键。

3.3 ssh 安全增强方法;密码方式和rsa key 方式的配置。

3.4 rpm/apt/yum/ports 装包,查询,删除的基本命令。

3.5 Makefile的基本格式,gcc 编译,连接的命令,-O0 和-O3区别。

3.6 gdb,strace,valgrind的基本使用.

四. 前端,HTML,JS

css盒模型。

javascript中的prototype。

javascript中this对象的作用域。

IE和firefox事件冒泡的不同。

什么是怪异模式,标准模式,近标准模式。

DTD的定义

IE/firefox常用hack.

firefox,IE下的前端js/css调试工具。

广州沃泰控股PHP面试题_高级php面试题及部分答案相关推荐

  1. 一线大厂php高级面试题_高级php面试题总结分享

    最近一段时间, 在北京参加30多家大中小互联网公司面试, 其中有百度, 腾讯, 蘑菇街, 滴滴, 美丽说, 互联网金融等公司, 面试过程也是学习过程, 从中发现这些知识点范围是固定的, 或者说如果你细 ...

  2. 大学mysql期末试题_四川大学数据库系统期末试题2014-2015.doc

    四川大学数据库系统期末试题2014-2015.doc 课程名称:数据库系统 任课教师 张天庆.龚勋.李川.屈立笳 学号: 姓名: 本题 NUMPAGES 3页,本页为第 PAGE 2页 教务处试题编号 ...

  3. java实习面试题_实习生java面试题集及详细答案

    实习生java面试题集及详细答案 1.Java 有那些基本数据类型,String 是不是基本数据类型,他们有何区别. Java 语言提供了八种基本类型:六种数字类型(四个整数型,两个浮点型)字节型 b ...

  4. 中考计算机知识点考试操作题,计算机上机操作试题_上机操作模拟试题

    上机操作模拟试题 注意事项: 1.考试时间为60分钟,满分值为50分. 2.上机操作试题结果应保存在建好的自己的文件夹中. 3.考试用机出现故障请及时举手由监考老师解决. 一. (3分)在D盘根目录下 ...

  5. vue 高阶面试题_高级Web前端工程师面试之Vue问题汇总解析

    又是一年毕业季,很多学习前端的同学面对激烈的求职竞争倍感压力,想要了解企业招聘会提问哪些问题.今天千锋郑州Web前端培训小编就给大家分享一下高级Web前端工程师面试中有关Vue的问题及解析. 1.Vu ...

  6. java jvm调优面试题_【Java面试题第一期】有没有jvm调优经验?调优方案有哪些?...

    ​1. 调优时机: a. heap 内存(老年代)持续上涨达到设置的最大内存值: b. Full GC 次数频繁: c. GC 停顿时间过长(超过1秒): d. 应用出现OutOfMemory 等内存 ...

  7. 亚信联创java面试题_亚信联创面试题及答案

    1. Vector & ArrayList 1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同 ...

  8. 国防科大JAVA工程师笔试题_国防科大人工智能考博题答案

    [实例简介] 国防科大计算机学院考博试题 人工智能11-15年试题答案 A-20 年 3 3(注主:图21的日2该是想反3):61(35),610) ①到日1 ① b+s=15 ② ①+9-5 =19 ...

  9. etl工程师 面试题_数据仓库工程师面试题笔试.doc

    数据仓库工程师面试题 姓名:____张小核______ 开始时间:_____:______ 结束时间:_____:_____ 数据库 使用过哪些数据库?试说出它们的异同.答:使用过SQL SERVER ...

最新文章

  1. 美多商城之项目准备-工程创建和配置
  2. Activity启动过程
  3. 结对编程--基于android平台的黄金点游戏
  4. 将两个列表连接在一起
  5. UG集成显卡 显示成烂面
  6. 【UVA1638】杆子的排列
  7. 【RESTful风格】软件接口设计中RESTful风格
  8. ansible的错误
  9. 5s的app显示无法连接服务器,苹果iphone5s手机无法连接App Store问题解决方法汇总...
  10. ————————C语言中快速排序方法——————————————
  11. 一位 90 后程序员的自述:如何从年薪 3W 到 30W
  12. 强联通分量:Tarjan缩点
  13. OpenHarmony 2.0和HarmonyOS发布会快评
  14. NBIOT BC28 AT指令
  15. 《疯狂Python讲义》数字转人民币大写完整代码
  16. 分拣外观残缺的机器人_基于机器视觉的垃圾分拣机器人设计
  17. 如何在Ubuntu上使用Canonical的Livepatch服务
  18. MSI B450迫击炮装机常见问题解决方法
  19. 微信小程序开发笔记 支付篇③——微信支付JSAPI下单和微信小程序调起支付(V2版本)
  20. 雨刮器全国产化电子元件推荐方案

热门文章

  1. Mac电脑上没有允许任何来源选项的解决方法
  2. Java中final和static修饰的变量是在什么时候赋值的?
  3. 携手至高军民融合研究院,爱莫成立机器智能联合实验室
  4. 目标检测论文解读复现之十六:基于改进YOLOv5的小目标检测算法
  5. 红外小目标检测-阈值分割
  6. 计算机病毒与网络安全的小报,校园网络安全手抄报图片
  7. linux中tldr(命令手册)
  8. android如何调取网站后台的图片,基于Bmob后台开发Android的APP项目——从后端获取图片,以及在后端上上传图片...
  9. 成为架构师,需要这些能力
  10. Python在线聊天软件(Tkinter)