一份还热乎的PHP大厂内部面经已拿Of

头部白癜风治疗 http://m.39.net/pf/a_4640703.html

1.请自我介绍一下?

答:我叫xxx,来自北京,20xx年毕业于xx大学计算机xx系,毕业后在武汉从事了x年的php开发工作,公司是一个外包公司,主要做   tar-xfall.tar

2)对于.gz结尾的文件   gzip-dall.gz   gunzipall.gz

zipall.zip*.jpg

这条命令是将所有.jpg的文件压缩成一个zip包

unzipall.zip

这条命令是将all.zip中的所有文件解压出来

下载命令

wget+空格+要下载文件的url路径

=====================================

Shell脚本:

必须以#!/bin/sh开头

简单例子:判断这个目录下有没有文件(File)

#!/bin/bashNum=ls-al/opt

grep"^-"

wc-lif[Num!=0]thenecho"/opthasNumfiles"elseecho"/opthasnonefile"fils-al/opt

grep"^-"

wc-l这个命令能够统计文件个数为0就是没有文件非零就是有文件

54..memcache缓存什么数据

答:一、经常被读取并且实时性要求不强可以等到自动过期的数据。例如网站首页 文章列表、某某排行等数据。

二、经常被读取并且实时性要求强的数据。比如用户的好友列表,用户文章列表,用户阅读记录等。

三、统计类缓存,比如文章浏览数、网站PV等。

四、活跃用户的基本信息或者某篇热门文章。

五、session数据

55.魔术方法、魔术常量

答:1、__construct()实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

2、__destruct()当删除一个对象或对象操作终止时被调用。

3、__call()对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。

4、__get()读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。

5、__set()设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。

6、__clone()克隆对象时被调用。如:t=newTest();t1=clonet;bj;

7、__clone()克隆对象时被调用。如:t=newTest();t1=clonet;

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

9、__wakeup()unserialize时被调用,做些对象的初始化工作。

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

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

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

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

魔术常量:

1、__LINE__返回文件中的当前行号。

2、__FILE__返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2起,__FILE__总是包含一个 路径,而在此之前的版本有时会包含一个相对路径。

3、__FUNCTION__返回函数名称(PHP4.3.0新加)。自PHP5起本常量返回该函数被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。

4、__CLasS__返回类的名称(PHP4.3.0新加)。自PHP5起本常量返回该类被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。

5、__METHOD__返回类的方法名(PHP5.0.0新加)。返回该方法被定义时的名字(区分大小写)。

6、__set()当程序试图写入一个不存在或者不可见的成员变量时,__set()方法包含两个参数,分别表示变量名称和变量值,两个参数都不可省略

7、__get()当程序试图调用一个未定义或不可见的成员变量时,__get()方法有一个参数,表示要调用的变量名

__sleep()常用于提交未提交的数据,或类似的清理操作如果有一些很大的对象,但不需要全部保存,这个功能就很好用。

__construct()在类实例化对象的同时执行该函数

__distruct()在类实例化的对象销毁时执行

__call()对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。

__clone()克隆对象时被调用。如:t=newTest();t1=clonet;

__toString()打印一个对象的时被调用。如echoobj;或printobj;

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

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

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

56.接口和抽象类的区别是什么?

答:抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。抽象类是通过关键字abstract来声明的。

抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法,抽象方法没有方法体,该方法天生就是要被子类重写的。抽象方法的格式为:abstractfunctionabstractMethod();

接口是通过interface关键字来声明的,接口中的成员常量和方法都是public的,方法可以不写关键字public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。

抽象类和接口实现的功能十分相似, 的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。

子类继承抽象类使用extends,子类实现接口使用implements。

57.什么是队列?排它锁,Myisam死锁如何解决?

答:在默认情况下MYisam是表级锁,所以同时操作单张表的多个动作只能以队列的方式进行;

排它锁又名写锁,在SQL执行过程中为排除其它请求而写锁,在执行完毕后会自动释放;

死锁解决:先找到死锁的线程号,然后杀掉线程ID

58.bootstrap框架有哪些优点?

答:bootstrap是一款web开发框架,它由CSS,JavaScript,Html,三部分构成,它简洁灵活,使得web开发更加的快捷

优点:

①节省时间:使用bootstrap框架,可以大大的节省项目开发时间,它包含了很多现成的代码,如果需要使用,只需要找到合适的代码,插入合适的位置即可,此外,CSS是使用LESS编写,很多样式和设计都已经设计完成了

②定制化:bootstrap可以根据自己的项目,留取框架中自己需要的部分

③设计合理:

栅格系统:bootstrap定义12格栅系统,在页面已经完成时,你可以根据合适的网格,以自己的需求改变行数和布局大小,样式已经开发完成了,只需要把代码放入合适的HTML代码位置即可LESS:LESS是基于CSS之上的高级语言,其目的是使得CSS开发更加灵活,更加强大JavaScript:bootstrap提供JavaScript库,该库超越了基本的架构和样式,开发者可以轻松的操作窗口警告框,工具提示框等,可避免了我们费神费力的写脚本一致性:bootstrap可以保证界面在不同平台的统一性,无论实在IE,Chrome等持续更新:bootstrap在不断的改进,更具规律性和持续性响应式:无论是在PC端还是移动端,都可以保持界面的一致性文档多:bootstrap的非常多

原文:


转载请注明:http://www.xxcyfilter.com/zyjn/zyjn/11549.html