php面试重要知识点,面试题

  

 

1.什么是引用变量,用什么符号定义引用变量?

 

 

概念:用不同的名称引用同一个变量的内容;用&符号定义。

例如:

1 $a = range(0,100); 
2 $b = &$a; 
3 $b = range(0,200);

 

 

当$b修改时,修改的是$b指向的内存空间,$a也跟着变化。

扩展:

正常情况下,如:

1 $a = range(0,100);
2 $b = $a;
3 $a = range(0,100);

没有引用地址空间时,当$b = $a ;$b指向$a的地址空间,当$a重新赋值时,才会再开辟另一个地址空间。

注意:1.使用unset,只会取消引用,而不会销毁地址空间。

2.在面向对象中,对象复制,默认是引用对象,想要再开辟另一个空间,需要用__clone方法。

 

面试真题

 

 

最终结果得出,bcc;

 

2.php字符串可以有几种定义方式,各自的区别是什么

(1)双引号

双引号解析所有转义字符和变量

(2)单引号

单引号不解析变量,只解析\\和\';

(3)heredoc

相当于双引号

语法格式:

$str = <<<"ET"
hello world
ET;

 

(4)nowdoc

 相当于单引号

$str = <<<'ET'
hello world
ET;

注意:heredoc和nowdoc一般用于大文本;

 

扩展

数据类型分三类:标量,复合,特殊;

标量:整型,浮点型,字符串,布尔型;

复合:数组,对象;

特殊:资源,NULL;

注意:1.浮点型不能用于比较等于,等运算符。因为在CPU计算的时候需要转换成二进制时有一定的消耗;

2.布尔类型,以下都为false,0,0.0,‘’,false,array(),NULL;

3.超全局数组有   $GLOBALS $GET $POST $REQUEST $SESSION $COOKIE $SERVER $FILES $ENV

   ($GLOBALS包含了所有全局变量数组;$REQUEST包含了$POST,$GET,$COOKIE,尽量少用$REQUEST;

     $SERVER['SERVER_ADDR'] 服务器端的IP地址

     $SERVER['SERVER_NAME'] 服务器名称

     $SERVER['REQUEST_TIME'] 请求时间

     $SERVER['QUERY_STRING'] ?后面的字符串,参数

     $SERVER['HTTP_REFERER'] 上级请求页面,从那里跳过来的 ,可能为空,当直接输入网址

     $SERVER['HTTP_USER_AGENT'] 请求头里面的AGENT信息 

     $SERVER['REMOTE_ADDR']  客户端IP地址 

     $SERVER['PATH_INFO'] url地址中路径的部分 

)

4.NULL的三种情况,直接赋值NULL,未定义的变量,unset销毁的变量

 

常量

const和define

const是语言结构,define是函数,const比较快,可以定义类的常量,define不可以定义类常量,常量一经定义,不能修改删除;

预定义常量

__FILE__  返回文件的路径名和名称

__LINE__  所在行号

__DIR__  所在目录

__FUNCTION__  所在的函数名称

__CLASS__  类的名称

__TRAIT__  

__METHOD__  类名加方法名

__NAMESPACE__  命名空间

 

 

3.foo()和@foo()的区别

@错误控制符

 

考点运算符

注意:1.boolean递增递减都没用;NULL递增等于一,递减无用;

 

真题

答案:1  1

优先级高到底  >   ||    =

 

 

4.php遍历数组的三种方式,各自的区别

 

 

 

真题

php如何去优化if elseif语句的情况?

1.把可能性大的排前面

2.如果是简单的整型浮点型或者字符串,可以使用switch case

 

真题

 

引用传递当第一次执行myFunc()时,static $b = 10;

当修改$a时,则修改了函数的返回值,则引用的地址空间;

 

5.时间函数

 

6.打印函数

7.字符串

8.数组

 

 

正则表达式

 

大学字母取反 

\d数字0-9 、\D除0-9

 \w数字字母下划线  

\s空白符

 

真题

 

文件目录操作

1 function read_file($file){
2     $handle = fopen($file, 'r');
3     $content = fread($handle);
4     fclose($handle);
5     $handle = fopen($file, 'w');
6     $content = 'helle world'.$content;
7     fwrite($handle, $content);
8     fclose($handle);
9 }

 

 

 1 function readDir($dir){
 2     $handle = opendir($dir);
 3     while (!false == $file = readdir($handle)) {
 4         if ($file != '.' && $file != '..') {
 5             echo $file;
 6             if (filetype($dir.'/'.$file) == 'dir') {
 7                 readDir($dir.'/'.$file);            
 8             }
 9         }
10     }
11 }

 

 

 

为什么要是用会话技术?

web是通过http协议实现的,因为http是无状态协议,没有一个内建机制维护两个事物之间的状态,当一个用户请求一个网页时,服务器不会认识这两次请求来自同一个用户,会认为是两次请求的独立,是两个不同的人来请求的,无法保持用户的登录状态,没有办法在不同页面进行用户跟踪,状态保持。

 

当cookie被禁用,可重写url

session存储,不同服务器上,不能访问其他服务器session,如何保持状态

存储函数

 

真题

session信息的存储方式,如何进行遍历

session存储到服务器,或者通过seesion_set_save_handler()存储到数据库

$_SESSION[]进行遍历

 

 

考点:还有各种魔术方法,设计模式。

当方法名和类名一样时,也是构造方法

 

考点:网络

 

 

 

请求方法

 

 

 

 真题:

HTTP、TCP协议分别在OSI网络模型的第几层

7应用层,4传输层

 

 

真题:

请简述CGI,FASTCGI和PHP-FPM的区别

 

 

真题:

ajax利用了什么协议,请简述ajax的工作机制?

ajax的基本概念,Asynchronous javascript and XML,异步的javascript和XML文件,通过在后台与数据库进行少量数据交换,ajax可以使网页实现异步更新。

 ajax的基本工作原理,XMLHttpRequerst是ajax的基础,XMLHttpRequerst是用于在后台与服务器交换数据

 

考点:linux

 

 

 

 

 

 

 

 

mysql考点:

 

 

 

 

 

 

 

 

 

 

 

高并发大流量

 

posted @ 2017-10-30 16:38  苦逼成长印记  阅读(1003)  评论(0编辑  收藏  举报