php面试重要知识点,面试题
1.什么是引用变量,用什么符号定义引用变量?
概念:用不同的名称引用同一个变量的内容;用&符号定义。
例如:
$a = range(0,100);
$b = &$a;
$b = range(0,200);
当$b修改时,修改的是$b指向的内存空间,$a也跟着变化。
扩展:
正常情况下,如:
$a = range(0,100);
$b = $a;
$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空白符
真题
文件目录操作
function read_file($file){
$handle = fopen($file, 'r');
$content = fread($handle);
fclose($handle);
$handle = fopen($file, 'w');
$content = 'helle world'.$content;
fwrite($handle, $content);
fclose($handle);
}
function readDir($dir){
$handle = opendir($dir);
while (!false == $file = readdir($handle)) {
if ($file != '.' && $file != '..') {
echo $file;
if (filetype($dir.'/'.$file) == 'dir') {
readDir($dir.'/'.$file);
}
}
}
}
为什么要是用会话技术?
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考点:
高并发大流量
php面试重要知识点,面试题的更多相关文章
- 2019前端面试系列——Vue面试题
Vue 双向绑定原理 mvvm 双向绑定,采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter.getter,在数 ...
- 2019滴滴java面试总结 (包含面试题解析)
2019滴滴java面试总结 (包含面试题) 本人6年开发经验.今年年初找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.滴滴等公司offer,岗位是既有php也有Java后端开发,最终选择去了滴滴 ...
- 2019滴滴php面试总结 (包含面试题解析)
2019滴滴java面试总结 (包含面试题) 本人6年开发经验.今年年初找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.滴滴等公司offer,岗位是既有php也有Java后端开发,最终选择去了滴滴 ...
- 2019头条java面试总结 (包含面试题解析)
2019滴滴java面试总结 (包含面试题) 本人8年开发经验.今年年初找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.滴滴等公司offer,岗位是Java后端开发. 面试了很多家公司,感觉大部分 ...
- Java 基础常见知识点&面试题总结(下),2022 最新版!
你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,同步一下最新更新,希望能够帮助你. 前两篇: Java 基础常见知识点&面试题总结(上),2022 最新版 ...
- Java 集合常见知识点&面试题总结(上),2022 最新版!
你好,我是 Guide.秋招即将到来(提前批已经开始),我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 你也可以在网站(javaguide.cn)上在线阅读, ...
- PHP程序员面试技巧之口试题分享
网络上流传很广的一部分php工程师面试题目,有些phper们认为这些很形式,天下面试题目一大把,不能考核一个人的真实水平,其实细细研究起来,无论怎样,能存在就表明其有存在的价值.下面小编整理了12条P ...
- IOS学习笔记48--一些常见的IOS知识点+面试题
IOS学习笔记48--一些常见的IOS知识点+面试题 1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...
- 关于面试总结-python笔试题
关于面试总结4-python笔试题 前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功. 要是给你一 ...
- 2019前端面试系列——JS面试题
判断 js 类型的方式 1. typeof 可以判断出'string','number','boolean','undefined','symbol' 但判断 typeof(null) 时值为 'ob ...
随机推荐
- redis(2)数据类型
一.数据类型 redis的数据结构是key-value的键值对的形式,但是它和传统String-String的键值对形式不一样,它的value不仅仅是string类型,而是有着丰富的数据类型,如: 1 ...
- 五、mybatis集成使用
1.添加依赖 <!-- mybatis-spring集成--> <dependency> <groupId>org.mybatis.spring.boot</ ...
- 工厂模式(Factory Pattern)
一.工厂模式(Factory Pattern)的介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使 ...
- mysql 的用法
SELECT CASEWHEN //当count(userId) = 0的时候 让其为null 不然报警告 // count(DISTINCT userId) 不用处理 count(userId ...
- css3之弹性盒模型初探(一)
什么是弹性盒模型? 弹性盒模型是指在父级改变大小的时候内部的自己元素也会相应的改变大小,即子集会按照父级的大小按比例自适应大小. 弹性盒模型的提出可以解决一些响应式布局的需求 如何使用弹性盒模型? ...
- 02HTML-<img>
一.img的属性:alt/title alt属性是替换名字,是给搜索引擎抓取使用,当图片显示不出来时,就会显示出alt的内容: title 属性是提示文字,当鼠标移到图片上的时候会显示出来,大部分的标 ...
- 软件项目技术点(6)——结合鼠标操作绘制动态canvas画布
AxeSlide软件项目梳理 canvas绘图系列知识点整理 我们创建一个类封装了所有鼠标需要处理的事件. export class MouseEventInfo { el: HTMLElemen ...
- div 居中方法汇总
本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 情况一: 父子容器宽高已知 方法一 html <div class= ...
- MDM-Object.fn 一些实践与理解
Object.assign() 用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象.如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖.后来的源的属性将类似地覆盖早先的 ...
- arcgis-Pro-1.3
sdk在线地址 http://pro.arcgis.com/en/pro-app/sdk/api-reference/#topic14079.html 看了下,整体开发架构全变了. 觉得不如以前com ...