ddchuxing——php面试题及答案

1.  echo和print的区别

echo没有返回值,print有返回值1,执行失败时返回false;echo输出的速度比print快,因为没有返回值;echo可以输出一个或多个字符串,print只允许输出一个字符串;print可以用于复杂的表达式,echo不行。

另问:echo是个函数吗?  echo不是函数,是语言结构。具体的解释可参见http://www.cnblogs.com/m1001m/archive/2013/03/24/2978219.html

2. 说几组数组有关函数

实在太多了,这里写几个好了,完整版参见http://www.runoob.com/php/php-ref-array.html

array()   创建数组。

array_diff()   比较数组,返回差集(只比较键值)。

array_pop()  删除数组的最后一个元素(出栈)。

array_rand()   返回数组中一个或多个随机的键。

array_replace()  使用后面数组的值替换第一个数组的值。

array_reverce()   以相反的顺序返回数组。

array_shift()  删除数组中首个元素,并返回被删除元素的值。

array_slice()  返回数组中被选定的部分。

array_splice()  删除并替换数组中指定的元素。

arsort()  对关联数组按照键值进行降序排序。

end()将数组的内部指针指向最后一个元素。

in_array()  检查数组中是否存在指定的值。

krsort()  对数组按照键名逆向排序。

next()  将数组中的内部指针向前移动一位。

reset()  将数组的内部指针指向第一个元素。

3. php中的魔术函数举例     哎呦,我脑子一抽就说出来了魔术变量,醉了。

     关于魔术函数呢,各方资料解释都不尽相同,大家多翻一翻,看看哪种说法你自己更容易理解。

__construct()  允许在实例化一个类之前先执行构造方法。

__destruct()  析构方法允许在销毁一个类之前执行的一些操作或完成一些功能。

__get(string $name)  用于获取私有属性值。读取一个对象的属性时, 若属性存在,则直接返回属性值;若不存在,则会调用__get函数。

__set(string $name,mixed $value)  用于设置私有属性。设置一个对象的属性时, 若属性存在,则直接赋值;若不存在,则会调用__set函数。

__call(string $name,array $arguments)  用于监视错误的方法调用。对象调用某个方法,若方法存在,则直接调用; 若不存在,则会去调用__call函数。静态方法中调用不存在或者不可访问的方法时,会调用__callStatic(string $name, array $arguments)  方法。

__tostring()  当打印对象时会被直接调用。如echo $obj;或print $obj。

__clone()  当对象被拷贝时直接调用。如$t=new Test();$t1=clone $t。

__sleep()  serialize之前被调用。若对象比较大,想删减一点再序列化,可考虑一下此函数。

__wakeup()  unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用__wakeup 方法,预先准备对象需要的资源。

__isset()  检测一个对象的属性是否存在时被调用。如:isset($c->name)。 

__unset()  unset一个对象的属性时被调用。如:unset($c->name)。

__set_state()  调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

__autoload()  实例化一个对象时,如果对应的类不存在,则该方法被调用。

__invoke()  当尝试以调用函数的方式调用一个对象时,__invoke 方法会被自动调用。

4. 往数据库里插入字段的MySQL语句

 假设我们的表名是users:

ALTER TABLE 'users' ADD 'uName' VARCHAR(200) NOT NULL AFTER 'uId';  //在uId字段后面加uName字段,中间的varchar 200 notnull都是属性

※那么问题来了,删除和修改语句都是什么呢?

 ALTER TABLE 'users'  DROP 'uName';   // 删除uName字段

 ALTER TABLE 'users' CHANGE 'uName' 'uId' INT(6) NOT NULL;   //将字段uName改为uId

5. LAMP和LNMP的区别

LAMP==Linux+Apache+Mysql+PHP
LNMP==Linux+Nginx+Mysql+PHP

感谢博主——啄木鸟http://blog.sina.com.cn/s/blog_626998030102wofn.html

6. HTTP请求错误返回码都有哪些?

3xx : 重定向   
301: 已移动 — 请求的数据具有新的位置且更改是永久的。   302: 已找到 — 请求的数据临时具有不同 URI。   
303: 请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此 应。   
304: 未修改 — 未按预期修改文档。   
305: 使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。   306: 未使用 — 不再使用;保留此代码以便将来使用。   4xx: 客户机中出现的错误   
400:  错误请求 — 请求中有语法问题,或不能满足请求。   401: 未授权 — 未授权客户机访问数据。   402: 需要付款 — 表示计费系统已有效。   403: 禁止 — 即使有授权也不需要访问。   
404: 找不到 — 服务器找不到给定的资源;文档不存在。   407: 代理认证请求 — 客户机首先必须使用代理认证自身。   
415: 介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。   5xx: 服务器中出现的错误   
500: 内部错误 — 因为意外情况,服务器不能完成请求。  501: 未执行 — 服务器不支持请求的工具。   
502: 错误网关 — 服务器接收到来自上游服务器的无效响应。   
503: 无法获得服务 — 由于临时过载或维护,服务器无法处理请求。 900:内部错误(由程序运行时抛出异常终止请求,而生成的结果) 901:连接超时 902:响应超时 903:IO异常 
904:数据用尽(参数化时数据取尽) 905:未知主机异常 
906:URL协议异常(url格式错误) 
907:证书错误(https请求时使用本地证书,由证书问题导致的异常) 908:socket连接错误 910:IO异常中断 911:非法状态 912:不支持的操作 913:连接关闭 
914:没有http响应 915:请求中止

※问题又来了,请求成功返回什么呢?

2xx: 成功   
200:  正常;请求已完成。   201: 正常;紧接 POST 命令。   
202: 正常;已接受用于处理,但处理尚未完成。   203: 正常;部分信息 — 返回的信息只是一部分。   
204: 正常;无响应 — 已接收请求,但不存在要回送的信息。

7.  php版本之间的差异了解多少?目前php最新版本是?

php版本更新太快了,每个月好几版,2016.11.10号出的7.0.13版本。版本之间的差异我也搞不太清楚,有熟悉的朋友拜托指教。

8.  (用JS代码书写Ajax异步数据传输?)

讲真,这个问题的具体的问法我记不清楚了,所以我括起来了。貌似是说页面跳转?把数据传送到另一个页面?

9.  字段为什么要加索引,哪些字段需要加索引?

使用索引可快速访问数据库表中的特定信息,建立索引的目的是加快对表中记录的查找或排序。

为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。

至于哪些数据需要加索引,还是需要了解加索引的原则,http://www.360doc.com/content/11/1028/20/7695581_159948053.shtml这里摘抄下重点:① 对于查询中很少涉及的列或重复值比较多的列,不要建立索引; ② 对于按范围查询的列,最好建立索引; ③ 表中若有主键或外键,一定要为其建立索引。

※那么问题来了:什么是主键、外键?聚集索引和非聚集索引的区别? 

10. 因为我个人有一些Linux系统开发经验,面试官问我熟悉的linux命令有哪些?

命令多的一拼,具体参见:http://www.runoob.com/linux/linux-command-manual.html

这里列举几个常用的吧:

改变文件的权限:chmod

切换目录:cd

显示当前所在目录:pwd

建立新目录:mkdir

删除空的目录:rmdir

列出目前工作目录所含之文件及子目录:ls

复制档案或目录:cp

返回路径中的文件名:basename

返回路径中的目录:dirname

寻找特定档案:whereis   locate   find

 

 

 

抱歉,可能一些写的并不正确,希望看到的朋友指教,谢谢!

原文地址:https://www.cnblogs.com/realcare/p/6073865.html