PHP手机游戏后台数据维护 英文工作怎么样?

篇一:PHP面试题总汇__整理完整版 PHP的意思
PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页
什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。
SESSION 与 COOKIE的区别是什么,请从协议,产1、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。 2、SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。 禁用cookie后,session不能正常使用。Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。Session文件是公有的。
不使用cookie向客户端发送一个cookie.
理解:session_start()开启时,生成一个常量 SID,当COOKIE开启时,这个常量为空,当COOKIE关闭时,这个常量中存储了PHPSESSID的值。通过在URL后加一个SID参数来传递SESSIONID的值,从而使客户端页面可以使用SESSION里面的值。 当客户端开启COOKIE和服务器端开启SESSION时。 浏览器第一次请求,服务器会向浏览器端发送一个COOKIE里面存储SESSIONID. 当浏览器第二次请求时,会把已存在的COOKIE一起提交到服务器端。
简述Cookie的设置及获取过程 设置COOKIE的值: Setcookie(名称,值,保存时间,有效域); 获取值:$_COOKIE['名称'];
HTTP 状态中302、403、 500、200、404、502代一二三四五原则: 一. 消息系列 二. 成功系列三. 重定向系列 四. 请求错误系列 五. 服务器端错误系列
302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401代表未授权。 200是请求成功,404是文件未找到,502是服务器内部错误。
请写出数据类型(int char varchar datetime text)的19、Int 整数 char 定长字符 Varchar 变长字符 Datetime 日期时间型 Text 文本型 Varchar 与char的区别 char是固定长度的字符类型,分配多少空间,就占用多长空间。 Varchar是可变长度的字符类型,内容有多大就占用多大的空间,能有效节省空间。 Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些MyISAM 和 InnoDB 的基本区别?索引结构如何实MyISAM类型不支持事务处理等高级处理,而 - 1 - InnoDB类型支持。MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。 创建索引:alert table tablename add index (`字段名`)
isset() 和 empty() 区别
Isset判断变量是否存在,如果存在则返回真,empty判断变量是否为空为假,如果为空为假则返回真。
include与require的区别? 1.include()在执行文件时每次都要进行读取和评估 require()文件只处理一次(实际上文件内容替换了require()语句) 2.require()通常放在PHP脚本程序的最前面 include()的使用和require()一样,一般放在流程控制的处理区段中,PHP脚本文件读到include()语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化 3,require()和include()语句是语言结构,不是真正的函数,可以像PHP的其他语言结构一样
4,include_once()和require_once()语句也是在脚本执行期间包括并运行指定文件,与include()require()唯一的区别是如果文件中的代码已经被包括了,则不会再次包括.
5,require()包含文件失败,停止执行,给出错误(致命的) include()常用于动态包含.
通常是自动加载的文件,即使加载出错,整个程序还是继续执行
一个页面声明,另一个页面调用
包函文件失败,继续向下执行,返回一条警告
PHP字符串中单引号与双引号的区别? 单引号不能解释变量,而双引号可以解释变量。 单引号不能转义字符,在双引号中可以转义字符。
请说明 PHP 中传值与传引用的区别。什么时候传值什
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。 function test(&$a) { $a=$a+100; } $b=1; echo $b;//输出1 test($b);//这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 echo &&br&&; echo $b;//输出101
in, not ni, exist, not exist的作用和区别? in在什么中 Not in 不在什么中 Exists 存在Not exists 不存在
面向对象中接口和抽象类的区别及应用场景? 1、有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用abstract关键字定义。 2、接口中全部是抽象方法,方法不用使用abstract定义。 3、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口。
echo(),print(),print_r()的区别? echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)Print()只能打印出简单类型变量的值(如int,string)print_r()可以打印出复杂类型变量的值(如数组,对象)echo
输出一个或者多个字符串
mysql_fetch_row() 和mysql_fetch_array之间有什Mysql_fetch_row()以索引数组的方式取查询的结果集,mysql_fetch_array()以索引数组和关联数组两种方式取查询的结果集。 请描述出两点以上XHTML和HTML最显著的区别 (1)XHTML必须强制指定文档类型DocType,HTML不需要 (2)XHTML所有标签必须闭合,HTML比较随意
33. HTTP协议中GET、POST和HEAD的区别? HEAD: 只请求页面的首部。 GET: 请求指定的页面信息,并返回实体主体。 POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。 (1)HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。 (2)在FORM提交的时候,如果不指定Method,则默认为GET请 求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为 该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中; GET方式提交的数据最多只能有1024字节,而POST则没有此限制。 (3)GET 这个是浏览器用语向服务器请求最常用的方法。POST这个方法也是用来传送数据的,但是与GET不同的是,使用POST的时候,数据不是附在URI后面传递的,而是要做为独立的行来传递,此时还必须要发送一个Content_length标题,以标明数据长度,随后一个空白行,然后就是实际传送的数据。网页的表单通常是用POST来传送的。
表单中 get与post提交方法的区别?
1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。2. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。3. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 - 2 - get安全性非常低,post安全性较高。
foo()和@foo()之间有什么区别?(1分)
@foo()控制错误输出
线性表和顺序表的区别? 1、线性表包括顺序表和链表。 2、顺序表中的元素的地址是连续的,链表里面节点的地址不是连续的,是通过指针连起来的。
什么是数据库索引,主键索引,唯一索引的区别,索引索引用来快速地寻找那些具有特定值的记录。 主键索引和唯一索引的区别:主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”,每个表只能有一个主键。唯一索引索引列的所有值都只能出现一次,即必须唯一。 索引的缺点: 1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 2、索引需要占用物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,需要的空间就会更大。 3、当对表中 的数据进行增加、删除、修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
浏览器IE和非IE浏览器的划分,区别是什么? IE浏览器指的是使用IE内核的浏览器,对一些W3C标准的网页代码的支持不是很好。 非IE浏览器指的是没有使用IE内核的浏览器,对W3C标准的网页代码有很好的支持。
数据库中的事务是什么?
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作 完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。
解释:左连接,右连接,内连接,索引。 1、攘咏鲅〕隽秸疟碇谢ハ嗥ヅ涞募锹迹虼耍饣岬贾掠惺蔽颐切枰募锹济挥邪础D诓苛邮橇礁霰碇卸急匦胗辛幼侄蔚亩杂χ档募锹迹莶拍芗焖鞒隼础 2、左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少。 3、左连接是只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来 4、右连接是只要右边表中有记录,数据就能检索出来 ; 5、全连接则会回返回两个表中的所有记录
简述0000000中无限分类的实现原理。 1、数据库分类表的设计:id字段、父id字段、类名称字段、path字段 2、Path字段存当前分类的路径,格式:0,父类id,本身id 3、查询分类:select * from 分类表 4、这样就查出来每个分类及其对应的子类。
能够使html和php分离开使用的模板? Smarty、template、PHPlibTemplate、FastTemplate使用那些工具进行版本控制? Clear case、CVS、SVN、PVCS、Perforce、CCC、StarTeam、RCS
写出三种以上MySQL数据库存储引擎的名称(提示: MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十几个引擎
什么是模板技术、能够使HTML和PHP分离开使用的 模板技术就是使程序的逻辑代码和界面分开的技术。 能够使HTML和PHP分开的模板有:Smarty、Template、PHPlib Template、FastTemplate
实现中文字串截取无乱码的方法 Mb_substr();
用PHP写出显示客户端IP与服务器IP的代码 获取客户端IP:get_env(“REMOTE_ADDR”); 获取服务器端IP:$_SERVER[&SERVER_ADDR&];
数据库索引有几类,分别是什么?什么时候该用索引? 普通索引、主键索引、唯一索引 并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中的数据时才需要在表上创建索引。
写几个魔术方法并说明作用? __call()当调用不存在的方法时会自动调用的方法 __autoload()在实例化一个尚未被定义的类是会自动调用次方法来加载类文件 __set()当给未定义的变量赋值时会自动调用的方法 __get()当获取未定义变量的值时会自动调用的方法 __construct()构造方法,实例化类时自动调用的方法 __destroy()销毁对象时自动调用的方法 __unset()当对一个未定义变量调用unset()时自动调用的方法 __isset()当对一个未定义变量调用isset()方法时自动调用的方法 __clone()克隆一个对象 __tostring()当输出一个对象时自动调用的方法
$_REQUEST、$_POST、$_GET、$_COOKIE、 它们都是PHP预定义变量 $_REQUEST用来获取post或get方式提交的值 $_POST用来获取post方式提交的值 $_GET用来获取get方式提交的值 $_COOKIE用来获取cookie存储的值 $_SESSION用来获取session存储的值 $_FILE用来获取上传文件表单的值
数组中下标最好是什么类型的,为什么? 数组的下标最好是数字类型的,数字类型的处理速度快。
++i和i++哪一个效率高,为什么? ++i效率比i++的效率更高,因为++i少了一个返回i的过程。
magic_quotes_gpc()、magic_quotes_runtime()的Magic_quotes_gpc()是php配置文件中的,如果设置 - 3 - 为on则会自动POST,GET,COOKIE中的字符串进行转义,在‘之前加\ Magic_quotes_runtime()是php中的函数,如果参数为true则会数据库中取出来的单引号、双引号、反斜线自动加上反斜杠进行转义。
框架中什么是单一入口和多入口,单一入口的优缺点? 1、多入口就是通过访问不同的文件来完成用户请求。 单一入口只web程序所有的请求都指向一个脚本文件的。 2、单一入口更容易控制权限,方便对http请求可以进行安全性检查。 缺点:URL看起来不那么美观,特别是对搜索引擎来说不友好。 你对Memcach的理解,优点有哪些? Memcache是一种缓存技术,在一定的时间内将动态网页经过解析之后保存到文件,下次访问时动态网页就直接调用这个文件,而不必在重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,减轻高并发时服务器的压力。 Memcache的优点:稳定、配置简单、多机分布式存储、速度快。
对关系型数据库而言,索引是相当重要的概念,请回答有关索引几个问题: a) 索引的目的是什么? 1、快速访问数据表中的特定信息,提高检索速度 2、创建唯一性索引,保证数据库表中每一行数据的唯一性 3、加速表和表之间的连接 4、使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间
b) 索引对数据库系统的负面影响是什么? 负面影响:创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改的时候索引也要动态维护,这样就降低了数据的维护速度。
c) 为数据表建立索引的原则有哪些? 1、在最频繁使用的、用以缩小查询范围的字段上建立索引 2、在平频繁使用的、需要排序的字段上建立索引
d) 什么情况下不宜建立索引? 1、对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引 2、对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等。
web应用中,数据库的读取频率远高于写入频率, 如何使用memcache缓存技术,将动态数据缓存到文件,访问动态页面时直接调用缓存文件,而不必重新访问数据库,这样就减少了查询数据库的次数。 如果网站的访问量很大,可以把数据库读写服务器分开,使用多态服务器去处理数据库查询,使用较少的服务器去处理数据库的写入和修改。
如果是一个Web频繁访问的查询,上题的查询如何优使用memcache缓存技术,在一定时间内将动态内容缓存到文件中,访问动态页面时,世界调用缓存文件而不必重新查询数据库。数据库设计时,常遇到的性能瓶颈有哪些,常有的解决瓶颈主要有: 1、磁盘搜索 优化方法是:将数据分布在多个磁盘上 2、磁盘读/写 优化方法是:从多个磁盘并行读写。 3、CPU周期 优化方法:扩充内存 4、内存带宽请举例说明在你的开发过程中用什么方法来加快页面的
要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具。
描述一下大流量高并发量网站的解决方案 1、确认服务器硬件是否足够支持当前的流量。 2、使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库。 3、禁止外部的盗链。 4、外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文件盗链,目前可以简单的通过refer来控制盗链,apache自己就可以通过配置来禁止盗链。 5、控制大文件的下载。 大文件的下载会占用很大的流量,对于非SCSI硬盘来说会消耗,使得网站响应能力下降。 6、使用不同的主机分流主要流量 7、使用流量统计软件。在网站上安装一个流量统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化。 8、分库分表。 9、Sphinx全文索引引擎。 对于大流量的网站,您采用什么样的方法来解决访问量 优化程序,优化数据库,如果程序和数据库已经最优化,使用以下解决方法: 1、确定当前服务器设备是否满足流量需求。 2、使用Memcache缓存技术,把动态内容缓存到文件中,动态网页直接调用这些文件,而不必再访问数据库。 3、禁止外部盗链,图片和文件外部盗链会给服务器带来大量的负载压力,可以通过refer来禁止外部盗链,或者使用apache来配置禁止盗链。 4、控制大文件的下载,大文件的下载对于非SCSI硬盘来说会占用大量的资源,导致服务器的响应能力下降。 5、使用不同的主机分流主要流量,使服务器均衡负载。 6、使用流量统计软件统计分析网站流量,可以知道哪些地方耗费了大量的流量,哪些页面需要再进行优化。
如何设计或配置Mysql,才能达到高效使用的目的。 1、数据库设计方面,设计结构良好的数据库,允许部分数据冗余。 选取最适用的字段属性,尽可能把字段设置为NOTNULL,这样在查询的时候,数据库不用去比较NULL值。 2、系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,集群,数据库查询和写入分开。 写高效sql语句,以提高效率。 使用连接(join)来代替子查询 使用联合(union)来代替手动创建的临时表 所得皆必须,只从数据库取必须的数据。 必要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。 使用事务 - 4 - 使用外键 使用索引
设定网站的用户数量在千万级,但是活跃用户的数量只我们可以根据用户的活跃程度,把活跃的用户提取出来放到另外一张表里面,每次活跃的用户登陆的时候就直接到活跃用户表中进行查询,这样就提高了数据库的查询速度。
了解XSS攻击吗? 如何防止 ? XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的Activex控件执行恶意的行为。 使用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化。
SQL注入漏洞产生的原因 ? 如何防止? SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。
防止SQL注入: 1、开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置 2、执行sql语句时使用addslashes进行sql语句转换 3、Sql语句书写尽量不要省略小引号和单引号 4、过滤掉sql语句中的一些关键字:update、insert、delete、select、* 5、提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。 6、Php配置文件中设置register_globals为off,关闭全局变量注册 7、控制错误信息,不要再浏览器上输出错误信息,将错误信息写到日志文件中。 如何进行防SQL注入?
1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等 或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤。 2、在PHP配置文件中 Register_globals=设置为关闭状态 //作用将注册全局变量关闭。 比如:接收POST表单的值使用$_POST['user'],如果将register_globals=直接使用$user可以接收表单的值。 3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号 4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的 5、对于常用的方法加以封装,避免直接暴漏SQL语句 6、开启PHP安全模式 Safe_mode= 7、打开magic_quotes_gpc来防止SQL注入 Magic_quotes_gpc=默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重大作用。 因此开启:magic_quotes_gpc= 8、控制错误信息 关闭错误提示信息,将错误信息写到系统日志。 9、使用mysqli或pdo预处理。用PHP写出一个安全的用户登录系统需要注意哪些方 1、密码要使用MD5(密码+字符串)进行加密。 2、登录表单的名称不要跟数据库字段一样,以免暴漏表字段。 3、用户表的表名、字段名、密码尽量用不容易被猜到的。 4、要使用验证码验证登陆,以防止暴力破解。 5、验证提交的数据是不是来自本网站。 6、登录后台处理代码数据库部分使用预处理,做好过滤,防止sql注入。
如何实现多个线程安全的写入一个文件数据。 采用锁机制,当一个用户在对此文件进行读写入操作时,将此文件锁定,操作完毕后解除锁定,在该用户进行读写入操作过程中,其他用户不能操作此文件,需要排队等待。什么是满二叉树?什么事完全二叉树? 满二叉树:除了叶子节点外的所有节点都有两个子节点。 完全二叉树:每个节点最多有两个子节点,缺右不缺左,而且最多只能缺少一个叶子节点。
字符串转数组,数组转字符串,字符串截取,字符串替换, Implode()、explode()、substr()、str_replace()、strpos、strrpos、strstr
GD库是做什么用的? (1分) gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。
在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。
由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图; MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。 视图是用户看到并与之交互的界面。 模型表示企业数据和业务规则。 控制器接受用户的输入并调用模型和视图去完成用户的需求。 MVC的优点:低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性、可扩展性,有利于软件工程化管理 MVC的缺点:没有明确的定义,完全理解MVC并不容易。不适合小型规模的应用程序。
PHP如何抛出和接收错误? 使用try...catch,异常的代码放在try代码块内,如果没有触发异常,则代码继续执行,如果异常被触发,就会抛出一个异常。Catch代码块捕获异常,并创建一个包含异常信息的对象。$e-&getMessage(),输出异常的错误信息。
PHP的网站主要攻击方式有哪些?
1、命令注入(Command Injection) 2、eval注入(Eval Injection) 3、客户端脚本攻击(Script Insertion) 4、跨网站脚本攻击(Cross Site Scripting, XSS) 5、SQL注入攻击(SQL injection) 6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF) 7、Session 会话劫持(Session Hijacking) 8、Session 固定攻击(Session Fixation) 9、HTTP响应拆分攻击(HTTP Response Splitting) 10、文件上传漏洞(File Upload Attack) 11、目录穿越漏洞(Directory Traversal) 12、远程文件包含攻击(Remote Inclusion) 13、动态函数注入攻击(Dynamic Variable Evaluation) 14、URL攻击(URL attack) 15、表单提交欺骗攻击(Spoofed Form Submissions) 16、HTTP请求欺骗攻击(Spoofed HTTP Requests) 几个重要的php.ini选项 Register Globals php&=4.2.0,php.ini的register_globals选项的默认值预设为Off,当register_globals的设定为On时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,而且由于PHP不必事先初始化变量的值,从而导致很大的安全隐患。 safe_mode 安全模式,PHP用来限制文档的存取、限制环境变量的存取,控制外部程序的执行。启用安全模式必须设置php.ini中的safe_mode = On
1、限制文件存取 safe_mode_include_dir = “/path1:/path2:/path3″ 不同的文件夹用冒号隔开
2、限制环境变量的存取 safe_mode_allowed_env_vars = string 指定PHP程序可以改变的环境变量的前缀,如:safe_mode_allowed_env_vars = PHP_ ,当这个选项的值为空时,那么php可以改变任何环境变量 John 写出Zend框架的目录结构,简单说明目录作用? application/ C 存放应用程序的目录,包括 MVC 系统、配置文件、服务以及引导程序(Bootstrap.php)
configs/ C配置文件目录。
application/modulesC 多模块目录结果例如admin(后台前程),default(前台),shop(商城)各个模块下都有自己的controllers,modules,Views
controllers/models/views/ C 控制器/模型/视图 目录。
application/cache C存放缓存等数据
application/helpers/ C 这个是存放“行动助手”(action helper)的目录。这些助手类默认的命名空间是“Controller_Helper_”,如果是多模块那么命令空间将是“&Module&_Controller_Helper”。 Bootstrap.php C 这个是应用程序入口文件。这个类的主要工作是引导应用程序,注册并初始化组件(component)。注意:不要在这个文件调用前置控制器(front controller)的dispatch() 方法。 library/ C 存放类库的目录。第三方的类库和自己写的类库放在这里进行自动 加载 但要注意要用自己独立的命名空间(建子目录)。 public/ C 存放公开文件的目录,也即网站的根目录,存放可以被用户访问的文件,例如js、css和图片等等。index.php 是应用程序的单入口,其主要工作是建立php环境,引用Bootstrap.php来初始化,并调用前置控制器的dispatch()方法来分发请求。 谈谈对mvc的认识? 由模型(model),视图(view),控制器(controller)完成的应用程序 - 5 -篇二:php面试题以及php知识点 . php中单双引号的区别 && 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。 '' 单引号里面的不进行解释,直接输出。
1.请说明php中传值与传引用的区别。什么时候传值什么时候传引用? 按值传递:函数范围内对值的任何改变在函数外部都会被忽略 按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 优缺点: 按值传递时,产生一个副本。对于大型的字符串和对象来说,这将会是一个代价很大的操作。 按引用传递则不需要复制值,对于性能提高很有好处。
2. 在PHP中error_reporting这个函数有什么作用? error_reporting() 设置 PHP 的报错级别并返回当前级别。
3. error_reporting(2047)什么作用? 答:PHP 显示所有错误 E_ALL 1E_ERROR 2E_WARNING 4E_PARSE 8E_NOTICE 16
E_CORE_ERROR 32
E_CORE_WARNING 64
E_COMPILE_ERROR 128 E_COMPILE_WARNING 256 E_USER_ERROR 512 E_USER_WARNING 1024E_USER_NOTICE 2047E_ALL 2048E_STRICT
4. session与cookie的区别? session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的一般用于后台和安全性比较高的地方。 cookie:是存储在客户端,对于Cookie来说是存储在用户浏览器下面的,一般用户登陆,负载压力比较大的地方。可以减轻服务器的负载。
5. 表单中 get与post提交方法的区别? 1、get是发送请求HTTP协议通过url参数传递进行接收而post是实体数据,可以通过表单提交大量信息. 2、Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。 3. 受url长度限制,get传输的数据量小,而post可以传输大量的数据。
6. 数据库中的事务是什么? 是指作为单个逻辑工作单元执行的一系列操作。 数据库事务的ACID属性:原子性,一致性,隔离性,持久性7. 4. echo count(&abc&); 输出什么? 答:&1&。 count ―计算数组中的单元数目或对象中的属性个数。如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。mode 的默认值是 0。count() 识别不了无限递归。 $b[0] = 7; $b[5] = 9; $b[10] = 11; $result = count($b); // $result == 3;
$result = count(null); // $result == 0
$result = count(false); // $result == 1
&?php $food = array('fruits'
=& array('orange', 'banana', 'apple'), veggie'
=& array('carrot', 'collard','pea'));
// recursive count echo count($food, COUNT_RECURSIVE);
// output 8
// normal count echo count($food);
// output 2 ?&
8. 用PHP写出显示客户端IP与服务器IP的代码 $_SERVER[“REMOTE_ADDR”]
和 $_SERVER[“SERVER_ADDR”]
9. Php代码 &?php $hosts = gethostbynamel(''); echo $hosts[0]; ?& gethostbyname() 返回 IP 网址,返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针. 返回值: 字符串 gethostbynamel
返回机器名称的所有 IP。若一个机器名称有很多个 IP 位址 (例如一些 FTP 或是 WWW 网站),使用本函数可以取得全部的 IP 位址,返回到数组变量中. 返回值: 数组 Gethostbyaddr
返回机器名称。本函数可返回某个 IP 网址的机器名称 (Domain Name)。若执行失败,则返回原来的 IP 网址。返回值: 字符串
10. echo,print()和print_r()有什么区别? 答:echo是PHP语法结构,无返回值 。print和print_r是函数,函数可以有返回值print() 只能打印出简单类型变量的值(如int,string) print_r() 可以打印出复杂类型变量的值(如数组,对象) Echo
11. include和require的区别是什么? 答:包含文件不存在或者语法错误的时候require是致命的,include不是require需要放在头部预先载入,而include放在文件的任何位置随时载入还有一对扩展函数:require_once() include_once()
12. PHP5中魔术方法函数有哪几个,请举例说明各自的用法 PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone , __autoload。 __construct() :实例化对象时被调用; __destuct():当删除一个对象或者对象操作终止是被执行; __call():调用对象不存在方法时被调用; __get():调用对象不存在的属性时被调用; __set():设置对象不存在的属性时被调用;_ _toString():打印一个对象时被调用,比如echo $obj,print($obj); __clone():克隆对象时被调用,比如$t = new Test();$tt = clone $t; __sleep():serialize之前被调用,若对象比较大,想做一些删除在序列化,可以考虑使用该方法; __wakeup():unserialize之前被调用,做些对象的初始化; __isset():检测对象是否存在属性的时候被调用,如 isset($c-&name); __unset():unset一个对象属性时被调用,如:unset($c-&name); __set_state():调用var_export时被调用,用__set_state的返回值作为 var_export的返回值;, __autoload():实例化一个对象时,如果对应的类不存在,在该方法被调用。
12.你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在? 1.脚本执行时间,启用xdebug,使用WinCacheGrind分析。 (WinCacheGrind是windows下的profile查看程序。所谓profile,就是程序或软件保存的档案资料,该软件常与XDebug配合使用来分析PHP程序的性能。) 2.数据库查询,mysql使用EXPLAIN分析查询,启用slow query log记录慢查询。
13.请对POSIX风格和兼容Perl风格两种正则表达式的主要函数进行类比说明 ereg preg_match ereg_replace preg_replace
14.请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响 safe_mode是提供一个基本安全的共享环境。在一个多用户共享的phpweb服务器上,当这台服务器开启了safe_mode模式,有以下函数将会受到影响。首先,一下尝试访问文件系统的函数将会被限制,运行服务器的用户id,如果想要尝试操作某个文件,必须要用户该文件的读取或者写入的访问权限。 因此,在safe_mode打开的情况下,下列函数将会收到限制: 输出一个或者多个字符串Ckdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,rename,fopen,require,highlight_file,show_source,include,symlink,link,touch,mkdir,unlink 以上都是跟操作文件系统有关的函数,除此之外,一些php扩展的函数也会受到限制,不能在程序里面直接加载扩展,只能到php.ini里加载,而且php如果需要执行操作系统的程序时,必须在safe_mode_exec_dir中指定程序的路径,否则执行将失败。此外还有exec,shell_exec,pasathru,system,popen等函数会收到限制
15. 请写出让,并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数? window下,假设php安装目录为c:\program files\php5\,那么使用命令窗口进入到该路径下,敲入php hello.php回车,则会执行当前路径下的hello.php文件,如果要指向其他路径下php文件,可以在php 路径/hello.php ,这种形式称为CLI模式,我们平时通过浏览器看到的那种成为CGI模式,至于传递参数,php文件在cli模式下,直接通过在文件名称后面接参数,多个参数中间用空格隔开,在php文件里面是通过两个变量来获取参数的,一个是$argv,一个是$argc,前者是传递参数的数组,默认第一个为php文件的名称;后者为$argv的数组个数。 linux下,一般程序安装都会安装在/usr/bin/php下面,可以通过man php查看一下,如果有信息说明可以使用,使用方法类似于window下。如果前面这步成立,那么你可以直接 php php文件 来运行php文件,如果man php没有信息,则说明当前php执行文件没有在环境路径里面,可以修改环境路径包含php路径,也可以类似于window进入php路径,在执行 php php文件。其他类似于window下。
16. PHP的垃圾收集机制是怎样的 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP的GC垃圾处理机制,防止内存溢出。 当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。GC进程一般都跟着每起一个SESSION而开始运行的.gc目的是为了在session文件过期以后自动销毁删除这些文件.
17.使对象可以像数组一样进行foreach循环,要求属性必须是私有。 (Iterator模式的PHP5实现,写一类实现Iterator接口)
18.请写一段PHP代码,确保多个进程同时写入同一个文件成功
function writeData($path, $mode, $data){
$fp = fopen($path, $mode);
= 0; $max_retries = 100;
if ($retries & 0) {}
$retries += 1; }while (!flock($fp, LOCK_EX) and $retries &= $max_retries);
usleep(rand(1, 10000));if ($retries == $max_retries) { } }
fwrite($fp, &$data\n&); flock($fp, LOCK_UN); fclose($fp); 19. 用PHP实现一个双向队列
20、用PHP打印出前一天的时间格式是 22:21:21 答:echo date('Y-m-d H:i:s', strtotime('-1 days'));
21、能够使HTML和PHP分离开使用的模板 答:Smarty ,XTemplate
22、使用哪些工具进行版本控制? 答:cvs,svn,
23、如何实现字符串翻转? 答:echo strrev($a);
函数反转字符串。
24.有一个网页地址, 比如PHP开发资源网主页: /index.html,如何得到它的内容? echo file_get_contents(&/index.html&);
25、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须? 答:heredoc的语法是用&&&&&加上自己定义成对的标签,在标签范围鹊奈淖质游桓鲎址 例子: $str = &&&SHOW my name is Jiang Qihui! SHOW;
26. 谈谈asp,php,jsp的优缺点。
27、谈谈对mvc的认识(1分) 答: 由模型(Model),视图(View),控制器(Controller)完成的应用程序 由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;
28、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email) Select username,count(1) as 帖子数 from members group by username order by 帖子数 desc limit 0,10; 29. 请写一个函数验证电子邮件的格式是否正确 (2分)篇三:php-面试题之PHP面试大全 php面试题大全 PHP面试题系列一【附答案】 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。 2.执行程序段&?php echo 8%(-2) ?&将输出(3)。 3.在HTTP 1.0中,状态码 401 的含义是(4);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(5)。 4.数组函数 arsort 的作用是(6);语句 error_reporting(2047)的作用是(7)。 5.PEAR中的数据库连接字符串格式是(8)。 6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把标记及其内容都去掉):(9)。 7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块, 然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。 9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。 10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on. 11.SQL 中LEFT JOIN的含义是(16)。 如果 tbl_user记录了学生的姓名(name)和学号(ID), tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject), 要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。 12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。 13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 14.简述论坛中无限分类的实现原理。 15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。 答案(填空): 1. echo $_SERVER['PHP_SELF']; echo $_SERVER[&HTTP_REFERER&]; 2. 0 3. (4)未授权 (5) header(&HTTP/1.0 404 Not Found&); 4. (6)对数组进行逆向排序并保持索引关系(7)All errors and warnings 5. 没弄明白6. /&[^&].*?&.*?&\/&/si 7.(10) LoadModule php5_module &D:/xampp/apache/bin/php5apache2.dll& (11) AddType application/x-httpd-php-source .phps AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml 8.(12) 发生异常时include产生警告require产生致命错误(13) require_once()/include_once() 9. serialize() /unserialize() 10. allow_call_time_pass_reference 11. (16) 自然左外连接 (17) select name , count(score) as sum_score from tbl_user left join tbl_score on tbl_user.ID=tbl_score.IDgroup by tbl_user.ID 12. 结束标识符所在的行不能包含任何其它字符除&;& 13. /** * 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。 * @param string $dir * @return array */ my_scandir($dir) { $files = array(); if ( $handle = opendir($dir) ) { while ( ($file = readdir($handle)) !== false ) { if ( $file != &..& && $file != &.& ) { if ( is_dir($dir . &/& . $file) ) { $files[$file] = rec_scandir($dir . &/& . $file); }else { $files[] = $ } } } closedir($handle); return $ } } =============================================================================== PHP面试题系列二【附答案】 1、用PHP打印出前一天的时间格式是 22:21:21 2、echo(),print(),print_r()的区别 3、能够使HTML和PHP分离开使用的模板 4、如何实现PHP、JSP交互? 5、使用哪些工具进行版本控制? 6、如何实现字符串翻转? 7、优化MYSQL数据库的方法。 8、谈谈事务处理 9、apache+mysql+php实现最大负载的方法 10、实现中文字串截取无乱码的方法。 答案: 1.echo date('Y-m-d H:i:s', strtotime('-1 day')); 2.echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象 3.so much,其实PHP本身就是一种模版引擎,我用过的是smarty,常见的还有 PHPLib,FastTemplate,Savant这里有个模板引擎列表:4. 题目有点含糊不清,SOAP,XML_RPC,Socket ,CURL都可以实现这些,如果是考PHP和Java的整 合,PHP内置了这种机制(如果考PHP和.NET的整合,也可以这么回答),例如$foo = new Java('java.lang.System');5.CVS 和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具,呃,这个可能需要这么回答:CVS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端. 6.用strrev函数呗,不准用PHP内置的就自己写: strrev($str) { $len=strlen($str); $newstr = ''; for($i=$$i&=0;$i--) { $newstr .= $str{$i}; } return $ } 7.高考政治题,把你知道的知识点都写上吧.我的答案: (1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率 (2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master (3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引 (4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句 (5). 所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) ... where article_id = ? 就可以了,不要先select * ... where article_id = ?然后msql_num_rows. 只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update ... set title = ? where article_id = ?不要set content = ?(大文本) (6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度. 8.如同是个编程语言都会有答应Hello World的例子一样,是本数据库的教材都会讲A给B的账户转账50美元的例子,回答这个就好了.不过据我所知,用MySQL的企业,很少用MySQL来实现事务处理.何况现在Oracle收购了InnoDB的公司. 9.参见第七题的答案,那个地方搞好了这个问题就迎刃而解了. 10.哈哈哈,我猜出题的人是不是被substr的中文处理问题烦恼很久了,是不是还用了网上流传的用正则匹配中文字符然后截取的函数,其实,有非常简单的解决方法:mb_substr() =============================================================================== PHP 面试题系列三【附答案】 1、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 表名User Name Tel
Content Date 张三
021- 中专毕业
2、请根据上面的题目完成代码: $mysql_db=mysql_connect(&local&,&root&,&pass&); @mysql_select_db(&DB&,$mysql_db); 3、如何使用下面的类,并解释下面什么意思? class test { Get_test($num) { $num=md5(md5($num).&En&); return $ } } 4、用javascipt打印 “上海爱吉” 5、写出 SQL语句的格式 : 插入 ,更新 ,删除 6、谈谈对你PHP认识或你擅长的技术? 答案: 1.SELECT Name,Tel,Content,Date FROM User WHERE Name='张三' 2. $mysql_db = mysql_connect(&local&,&root&,&pass&); @mysql_select_db(&DB&,$mysql_db);篇四:2015PHP经典面试题
一、 PHP基础 题目1:表单中 get与post提交方法的区别? 题目2:在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?); 题目3:session与cookie的区别?
题目4:如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到? 题目5:语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是(?);为了避免多次包含同一文件,可以用语句(?)来代替它们。 题目6:类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(?)。
二、 PHP进阶 题目1、请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响? 题目2:你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在? 题目3:请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?三、 考察项目理解能力 问题1:请谈谈你对IT项目开发实施的理解,以及自己如何这个过程中把工作做得最好? 四、 考察需求详细设计能力 问题1:请谈谈你对什么是需求,什么是需求设计工作的理解?并简单举例,一个现实中的需求原型,并对其进行剖析与分解,使其转化为实际的功能点与流程? 五、 考察其学习ecstore及ec-os的能力 问题1:请谈谈你对ecstore与ecos系统的理解? 六、 大约花15分钟写一小段自己认为比较经典的代码,并阐述代码亮点所 在(加分-可选)篇五:php经典面试题及答案非常实用 最常见的php面试题
目录 面试题一 .......................................................................................................................................... 1 面试题二 .......................................................................................................................................... 3 面试题三 .......................................................................................................................................... 4 面试题四 .......................................................................................................................................... 6 面试题五 .......................................................................................................................................... 7 面试题六 .......................................................................................................................................... 8 面试题七 .......................................................................................................................................... 9
本面试题分为七套,这些大部分都是本人被面试过的总结,发出来给大家参考,希望能助你在面试中顺利过关!
1、表单提交get和post有何区别? 答:get的方式是把数据在地址栏中发送,get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 2、用PHP打印出前一天的时间格式是 22:21:21 echo date(&Y-m-d H:i:s&,time()-(3600*24));或echo date(&Y-m-d H:i:s&,strtotime(&-1 day&)); 3、php中include和require的区别? 这两种结构除了在如何处理失败之外完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在遇到丢失文件时停止处理页面就用 require()。include() 就不是这样,脚本会继续运行。 4、echo(),print(),print_r()的区别 echo可以接多个参数,print只能接一个参数,它们都是PHP的语言结构,print_r是递规打印,用来打印数组或对象 5、能够使HTML和PHP分离开使用的模板 smarty,phplib,SmartTemplate 6你如何理解MVC模式? 首先说一下框架,框架:就是别人把一些底层,常用操作.比如数据操作(增,删,改,查)写好.你来直接用.其它的功能要自己来做。 MVC:设计模式,M模型,V显示,C控制.现在许多框架都是基于MVC来做的把逻辑和显示分开.比如你要换页面,只需要改V里面的东西并不需要再去变动程序(详细的东西可以上网上! 查一下)
7、如何实现PHP、JSP交互?PHP提供了支持JAVA的类库文件,或者通过HTTP协议来交互数据 8、使用哪些工具进行版本控制? VSS,CVS,SVN 9、如何实现字符串翻转? 不考虑中英文混合,不是最优算法,不用php库函数翻转字符串: functionstr_to_reverse($str){ for($length=0;$str[$length]!=$length++){;} $strlength=$length-1; unset($length);
for($start=0,$end=$$start&$$start++,$end--){ $temp=$str[$start]; $str[$start]=$str[$end]; $str[$end]=$ } unset($temp,$start,$end,$strlength); return$ }
10、优化MYSQL数据库的方法。 1) 将where中用的比较频繁的字段建立索引,联合索引。
2) 保证单表数据不超过200W,适时分割表。
3) 避免使用长连接。
4) 修改my.cnf里面的各项参数,比如最大连接数,查询缓存等。根据你的服务器内存来最大化调节那些配置参数。
5) 针对需求,使用正确的表引擎,是myisam或是innodb。
11.用PHP写出显示客户端IP与服务器IP的代码: echo $_SERVER['REMOTE_ADDR'] //客户端ip echo $_SERVER['SERVER_ADDR'] //服务器端ip
12、apache+mysql+php实现最大负载的方法 1) 问的太笼统,生成静态html页面,squid反向代理,apache,mysql的负载均衡。
2) 可以采取数据缓存的方法,我们通常在统计数据的时候,需要在原始数据的基础上经过计算等一系列操作,才会得到最终的结果,如果每做一个查询都需要这样一系列操作,当数据量大时,势必会带来很多问题。可以建立一个结果表,写一个脚本,用crontab定时触发脚本去原始表取数据,计算,写入到结果表,前端查询从结果表取数据,这也是比较常用的一种做法。
3) 采用分布式,多个apache,多个mysql,其实就是dns负载均衡,dns根据当前用户解析几个ip的ping值,将用户转移到某一台最快的服务器,或者平均分配。
4 )money不是问题的话,可以考虑F5硬件负载均衡!
5)可以使用Microsoft Windows Server系统的负载均衡设置
面试题二 1、PHP/MySQL编程
1) 某内容管理系统中,表message有如下字段 id 文章id title 文章标题 content 文章内容 category_id 文章分类id hits 点击量
创建上表,写出MySQL语句
2)同样上述内容管理系统:表comment记录用户回复内容,字段如下 comment_id 回复id id 文章id,关联message表中的id comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0
3) 上述内容管理系统,表category保存分类信息,字段如下
category_id int(4) not null auto_ categroy_name varchar(40)
用户输入文章时,通过选择下拉菜单选定文章分类 写出如何实现这个下拉菜单
2、PHP文件操作
1) 上述内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路
ob_start();
3、实现中文字串截取无乱码的方法。 这个首先要考虑字符集的问题,UTF-8下一个汉字占3字节,GBK下一个汉字占2字节.可以自己写个函数来处理,别人也写了很多,当然也可以开启mbstring扩展库,使用里面的mb_substr()等函数来截取。当截取字符出现乱码时,是因为汉字被截断了,可以再字符串尾部连上一个chr(0)
var $empty = ''; var $null
= NULL; var $bool
= FALSE; var $notS var $array = array();
1. $a = &hello&; $b = &$a; unset($b); $b = &world&; what is $a? hello,unset($b)只是释放了$b自己和$a的别名关系,并不会释放$a
2. $a = 1; $x = &$a; $b = $a++; what is $b? 1,先执行$b = $a,$a++再进行,所以$b还是1
3. $x = empty($array); what is $x?true or falsetrue,$array是空数组
4.您是否用过版本控制软件? 如果有您用的版本控制软件的名字是? CVS:winCVS,是一个CVS的客户端 VSS,微软的产品,比较适合中小型项目,只支持单人checkout
5.您是否用过模板引擎? 如果有您用的模板引擎的名字是? SMARTY,php官方推荐的模板引擎,它是编译型模板,与phplib不太相同,功能强大,30多种标签,支持cache
6.请简单阐述您最得意的开发之作. hdwiki,开源项目,mediawiki的使用性国人很不适应,代码修改起来也比较困难.hdwiki比较适合目前的国人使用.
7.对于大流量的网站,您采用什么样的方法来解决访问量问题? 1 squid反向代理
8、谈谈事务处理 可以控制并发操作所产生的数据同步提交、更新所带来的冲突问题.可以进行comit,rollback操作,数据的安全性得到了提高。
2) 简单描述用户修改以发布内容的实现流程和基本思路
9、PHP程序
1) 写出以下程序的输出结果 &?
$a=$b&$c?4:5;
echo $a;篇六:2015年-PHP面试题 说明: 1. 2. 3. 4. 了解每道题考察的是那方面的知识点; 回答时注意找到重点 通过一道题能扩展更多内容去了解 红色部分的题难度稍高一点 Linux部分 简答题: 1. 简述Linux下安装PHP的过程? 2. 简述Linux下安装Mysql的过程? 3. 简述Linux下安装apache的过程? 4. 监视一个日志文件a.log 的最新内容? 5. 查看当前服务器的HTTP连接有哪些? 6. 说说Linux下的find命令和grep命令的区别? 7. 如何实现每天0点钟重新启动服务器? 8. 请写出5个常用的unix操作命令? 9. rm -rf * 是什么意思,其中 f 有什么作用? 10. Linux压缩文件和解压文件的命令? 11. Linux的目录进行遍历,编写shell脚本? 12. apache默认使用进程管理还是线程管理?如何判断并设置最大连接数? 13. 当前目录下有一个文件为 showme.sh , 如何修改文件,将其指定为使用 /bin/bash 运 行,如何修改其权限为所有用户可读写,所有用户可执行? 14. 当前目录下有一个文件为 showme.sh,如何修改其所有人为root? 15. 在linux 请写出一种自动定时备份某一个文件的方法和具体实施流程,要求每天凌晨3 点的时候备份一次。
选择题 1.cron后台常驻程序(daemon)用于: A.负责文件在网络中的共享 B.管理打印子系统Manages theprinting subsystem C.跟踪管理系统信息和错误 D. 管理系统日常任务的调度(scheduing)
2.怎么了解您在当前目录下还有多大空间? A. Use df B. Use du / C. Use du. D. Use df. 3. 有一个备份程序mybackup,需要在周一至周五下午一点和晚上八点各运行次, 下面哪一条crontab的项可以完成这项工作? 易第优教育
A.0 13,20 * * 1,5 mybackup B.0 13,20 * * 1,2,,3,4,5, mybackup C.*13,20 * *1,2,3,4,5, mybackup D.0 13,20 1,5 * *mybackup 4. 下面哪条命令可以把f1.txt复制为f2.txt? A.cp f1.txt|f2.txt B.cat f1.txt|f2.txt C.cat f1.txt|f2.txt B.copy f1.txt|f2.txt 5. 使用命令可以查看Linux的启动信息? A.mesg Cd B.demesg C.cat /etc/mesg D.cat /var/mesg 6. 在vi中退出不保存的命令? A.:qt B.:r C.:wq D.:q! 前台部分 选择题: 1. 请列出4个常用的HTML标签名 2. Javascript的常用对象有哪些? 3. JS表单弹出对话框函数是?获得输入焦点函数是? 4. JS的转向函数是?怎么引入一个外部JS文件? 5. 通过JS创建一个当前窗口的子窗口,通过程序实现子窗口对父窗口的操作实例? 6. 通过JS实现页面的前进和后退操作? 7. 浏览器IE和非IE浏览器的划分,区别是什么?
编程题:2. 用javascript取得一个input的值?取得一个input的属性? 3. 用Jquery取得一个input的值?取得一个input的属性? 4. 请您写一段ajax提交的js代码,或者写出ajax提交的过程逻辑。
2、请用HTML(div)+css 的方式实现以下的网页样式布局(10分,P) 易第优教育
PHP部分 1. 数组中下标最好是什么类型的,为什么? 2. PHP字符串中单引号与双引号的区别? 3. ++i和i++哪一个效率高,为什么? 4. foo()和@foo()之间有什么区别? 5. isset()和empty()的区别 6. html表单中 GET与POST提交方法的区别? 7. echo(),print(),print_r()的区别? 8. include和require的区别是什么?为避免多次包含同一文件可用什么代替它们? 9. session与cookie的区别与关系, 禁用cookie后, session能否正常使用? 10. php中, $_REQUEST, $_GET, $_POST, $_COOKIE, $_SESSION, $_FILES分别代表什么? 11. 2M ADSL宽带连接, 理想情况下, 最大下载速度是多少KB/s
? 12. 什么是时间戳? 如何取得当前时间戳? 13. 写出192.168.0.1 ip地址的二进制和10进制表示形式 14. 一个字节占多少bit ? 一个IPv4地址占几个字节? 一个IPv6地址呢? 15. 请写出一个正则表达式,用于匹配一个HTML文件中&img /&标记中的图片地址 16. 用PHP打印出前一天的时间格式是 22:21:21 17. 如何实现字符串翻转? 18. php5中魔术方法有哪几个? 并说明其用法 __construct() __destruct() __set() __get() __unset() __isset() __call() Function __sleep() { Reutrn array(“name”, “age”); } __clone() __wakeup() __autoload() __toString()
易第优教育 20. 21. 22. 23. 24. 25.
26. 求两个日期的差数,例如 ~
的日期差数。 谈谈你对MVC的认识,介绍几种目前比较流行的MVC框架? 写一个匹配URL的正则表达式 使用版本控制工具的目的是什么? 你用过哪些版本控制工具? 如何快速下载一个远程http服务器上的图片文件到本地? 框架中什么是单一入口和多入口,单一入口的优缺点 打印一个用‘.’链接的字符串时候,还可以用什么代替‘.’链接效率更高些 Echo $a,$b,$c Echo “{$a}{$b}”
27. 提示类型200、301 ,302,303,404、401,403,500,505,502 HTTP response code 所代表的含义。
28. 编写一个自定义函数提取“Www/hello/test.php.html?a=3&b=4”路径的的后缀名。
29. 你对Memcach的理解,优点有哪些?
30. 31. 你所知道的php数组相关的函数?
32. 用PHP写出显示客户端IP与服务器IP的代码 33. 如何修改SESSION的生存时间
34. 有一个网页地址, 比如PHP开发资源网主页: /index.html,如 何得到它的内容?
35. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须? &&&aaaa aaaa A
36. 请用php编写程序,读取出的首页的网页内容(仅html),并存入 字符串 $str. 易第优教育
40. 至少写出一种验证139开头的11位手机号码的正则表达式。 41. 请写一个函数,实现以下功能:字符串“open_door” 转换成 “OpenDoor”、” make_by_id” 转换成 ”MakeById”。 42. 请用php写出以下程序:假设网络中有一台服务器192.168.1.101,开放端口8899 进行侦听,请用php的socket相关知识,写出一个简易的client,连接到server,并发送字符串”hello server!”。程序仅对连接的成功和失败进行简易错误判断和处理即可。 43. 实现中文字串截取无乱码的方法。 44. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用? 45. 在PHP中error_reporting这个函数有什么作用? 46. 请写一个函数验证电子邮件的格式是否正确 47. 简述如何得到当前执行脚本路径,包括所得到参数 48. $_SERVER[“script_name”]. 49. 如何声明一个名为”myclass”的没有方法和属性的类? 50. 如何实例化一个名为”myclass”的对象? 51. 你如何访问和设置一个类的属性? 52. GD库是做什么用的? 53. 指出一些在PHP输入一段HTML代码的办法 54. $arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 55. $a = 'abcdef'; 请取出$a的值并打印出第一个字母
56. 请写出PHP5权限控制修饰符 57. 请写出php5的构造函数和析构函数 58. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名 59. 请列出3种PHP数组循环操作的语法,并注明每种循环的优缺点 60. 请列出3个PHP中的预定义全局变量 61. 从PHP4.2.0开始 PHP默认配置将register_globals配置设定为off,请指出这个设定 的作用和对PHP相关程序的影响。
a. php $_SESSION[‘name’] $name=10;
62. 不断在文件hello.txt头部写入一行“Hello World”字符串,要求代码完整 63. 64. 封装一函数、实现统计指定位置上的字符出现在整个字符串中的次数功能,eg:字 符串“test_for_test”,指定第四位‘t’为要查找的字符,运行后返回4(出现了4次) 易第优教育
请写一个函数将转换成1,234,567,890 每3位用逗号隔开的形式。相关热词搜索:

我要回帖

更多关于 车鉴定品牌数据维护中 的文章

 

随机推荐