面试PHP遇到一些笔试题


1、请简述PHP的魔术函数__get() 和__set() 的作用
    参考:PHP魔术方法之__set()和__get()

2、请问你觉得做移动端APP接口设计要考虑哪些问题?
    参考:移动端APP接口设计要考虑哪些问题

3、如果你知道某次PHP请求要很长时间才能完成,怎样防止PHP脚本超时
    参考:PHP http请求超时问题解决方案

4、现有三个表:学生表(学生id,姓名)、课程表(课程id,课程名)、学生选课表(学生id,课程id),请问要列出所有学生的选课情况(每个学生选了多少门课,分别是什么),请写出SQL语句
     参考:现有三个表:学生表(学生id,姓名)、课程表(课程id,课程名)、学生选课表(学生id,课程id),请问要列出所有学生的选课情况(每个学生选了多少门课,分别是什么),请写出SQL语句

5、怎样设置单个PHP脚本能开销的最大内存值?在PHP脚本里面,如何获取当前使用内存,如何获得到目前为止该脚本内存使用的最大峰值?
    参考:php 中修改内存限制的三种方法 及 获取当前使用内存、内存使用的最大峰值

6、简述PHP的autoload机制(是什么?有哪些实现方式?)
    参考:PHP的autoload详解

7、简述你所知道的PHP源码加密方法
    参考:PHP源码加密

8、要把一个类保存到数据库的text类型字段中,然后恢复整个类,要用到什么函数?
    参考:unserialize ( string $str ) 、serialize( string $str

9、大家都知道调用header()函数之前不能有任何输出,如果你不知道header()调用前是否已经有输出语句,如何把输出缓存起来?又如何把缓存输出到客户端?
 ???

10、简述缓存Redis和Memcached的区别
一、性能
  由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据时,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。

二、内存使用效率

  使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。

三、Redis支持服务器端的数据操作
  Redis相比Memcached来说,拥有更多的数据结构并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去,序列化再反序列化,这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
  与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多。最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set。Redis内部使用一个redisObject对象来表示所有的key和value。

四、数据备份恢复

  memcached挂掉后,数据不可恢复;redis数据丢失后可以通过aof恢复,Redis支持数据的备份,即master-slave主从模式的数据备份
五、数据存储
  Redis和Memcached都是将数据存放在内存中,都是内存数据库。不过memcached还可用于缓存其他东西,例如图片、视频等等。memcached把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小;redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(RDB、AOF),而Memcached不支持持久化。同时Redis并不是所有的数据都一直存储在内存中的,当物理内存用完时,Redis可以将一些很久没用到的value交换到磁盘,但memcached超过内存比例会抹掉前面的数据。

......


以上参考皆来自网络,仅供参考


PHP魔术方法之__set()和__get()

ubuntu搭建LAMP环境

评 论
更换验证码