面试经典概要学习

 

Vagrant up  vagrant halt  vagrant ssh

1.PHP基础知识

2.JavaScript、jQuery、AJAX基础知识

3.LINUX基础知识

4.MYSQL数据库的基础与优化

5.程序设计题

6.PHP框架基础知识

7.算法、逻辑思维(时间复杂度、空间复杂度、内置函数 重要 )

8.高并发解决方案(pv/uv/qbs)

9.redis   memcache

 

php 引用变量,什么情况使用?
常量及数据类型
运算符及流程控制
自定义函数与内部函数
文件及其目录
正则
会话控制
面向对象
网络协议
开发环境及相关
git 或 svn 解决版本冲突
int 最大值
字符串 存储类型 字符 utf8 = 3个字符
TP 框架区别
mysql 函数 char_length、FIND_IN_SET(str,数组)
redis 数据类型 各个使用场景‘
支付接口 的同步 异步
进程、线程 都有哪些状态?分别是什么?文件夹中的一个二进制文件是进程吗?
如何统计一个小时的nginx日志中,各个接口的访问次数。
HTTP是tcp还是UDP?HTTP有无状态?如何优化?
explain 命令输出主要都看哪些指标?
索引的优缺点?
PHP中final关键词用于做什么?finally区别?
fpm是多进程还是多线程?
fpm是如何接受请求并进行处理的?
一个fpm进程能够处理几个请求?
什么是request生命周期?
什么是进程生命周期?


<?php
php变量的工作原理。理解COW(copy on write 写时复制机制)

class Person
{
public $name = "zhangsan";
}

$p1 = new Person;
xdebug_debug_zval('p1');//1
xdebug_debug_zval('p2');//0
$p2 = $p1;
xdebug_debug_zval('p1');//2
xdebug_debug_zval('p2');//2 refcount   is_ref=0
$p2->name = "lisi";
xdebug_debug_zval('p1');//2
xdebug_debug_zval('p2');//2

exit;

$a = range(0, 3);
xdebug_debug_zval('a');//1
xdebug_debug_zval('b');//0
$b = $a;
xdebug_debug_zval('a');//2
xdebug_debug_zval('b');//2
$a = range(0, 2);
xdebug_debug_zval('a');//1
xdebug_debug_zval('b');//1
exit;

$a = range(1,10);
//print_r($a);
echo memory_get_usage(); //内存使用情况。
xdebug_debug_zval('a');//zval 容器

$b = $a;
echo memory_get_usage(); //内存使用情况。
xdebug_debug_zval('a');

$a = range(0,10);
echo memory_get_usage(); //内存使用情况。
xdebug_debug_zval('a');

echo '<hr/>';

$a = range(0,10);
//print_r($a);
echo memory_get_usage(); //内存使用情况。
xdebug_debug_zval('a');//zval 容器

$b = &$a;
echo memory_get_usage(); //内存使用情况。
xdebug_debug_zval('a');

$a = range(0,10);
echo memory_get_usage(); //内存使用情况。
xdebug_debug_zval('a');

echo '22222222<hr/>';

//unset 只会取消引用,不会销毁空间。
$a = 1;
$b = &$a;
unset($b);
echo $a;

echo '333333333333<hr/>';

//对象本身就是引用传值。
class person
{
public $name = 'lili';
}
$p1 = new person;
xdebug_debug_zval('p1');
$p2 = $p1;
xdebug_debug_zval('p1');
$p2->name = 'list';
xdebug_debug_zval('p1');
//$p2 修改后 不会重新复制一份$p1,而是$p1和$p2 同时被更改.

echo '4444444444<hr/>';

$data = ['a','b','c'];
foreach($data as $k=>$v)
{
     $v = &$data[$k];
}

程序运行时,每一次循环结束后变量$data的值是什么?

程序执行完成后,变量$data的值是什么? 

 

?>

 

php中哪三种定义方法以及区别:单引号、双引号、heredoc newdoc

单引号不解析变量;不能解析转义字符,只能解析单引号和反斜线本身。
变量和变量、字符串与字符串、字符串与变量之间可以用.链接。
双引号解析变量,变量可以使用特殊字符和{}包含。
双引号可以解析所有转义字符。
也可以用.连接。

echo $str1 = 'shie$a<br/>';
echo $str2 = "hgshs&g'{$str1}%&nbsp;dd";

7中false情况 : 0 ,0.0,false,array(),NULL,'0',' '

$a = 0.1;

$b = 0.2;

if($a+$b == 0.3) //false   计算机中cpu 是二进制 计算 有误差。

const 效率高 是语言结构  定义类的常量

define 函数 7之前不能定义成数组   不能定义类的常量

一经定义不能修改 不能删除。

 

递归 查找文件

 

for 循环只能遍历索引数组

foreach 可以遍历索引数组和关联数组    foreach会对数组reset操作;   将数组的指针 直到开始

联合使用list()、each()和while 循环 同样可以遍历索引数组和关联数组  (组合 不会reset()操作 重置)

<?php
$people = array("Bill", "Steve", "Mark", "David");

reset($people);

while (list($key, $val) = each($people))
  {
  echo "$key => $val<br>";
  }
?>
if ... elseif 在elseif 语句中只能有一个表达式为true ,即在elseif语句中 只能有一个语句块被执行,多个elseif 从句是排斥关系。
使用elseif语句有一个基本原则,总把优先范围小的条件放在前面处理。
swich....case:switch后面的控制表达式的类型只能是整型、浮点型、或者字符串;
switch 会生成跳转表、直接跳转到case; 有一个索引表 不会一层层判断 会直接跳到case 对应的语句。
如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么用switch语句可能会快一些。
if elseif 优化 范围小的在判断前面 假如值是整型 、浮点型和字符串 可以用switch 替换。

$count = 5;
function get_count()
{
static $count;
return $count++;
}
echo $count;
++$count;
echo $count.'<hr/>';//6
var_dump(get_count());//null
echo '<hr/>';
echo get_count();//1

变量的作用域 和 静态变量;静态变量只能在局部函数域中存在。不会释放内存 会一直存在。

    函数的参数以及参数的引用传递;

   函数的返回值以及引用返回;

   外部文件的导入;

   系统内置函数;时间日期函数、ip处理函数,打印处理函数,序列化 反序列化函数、字符串处理函数,数组处理函数,

函数的返回值

 

  include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。在执行文件时,每次都会读取数据,用到时加载

  require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。在执行文件时,只读取一次,相对效率高。一开始就加载。

 

禁用cookie 后 session 的传递

<a href ="1.php?<?php echo session_name().'='.session_id(); ?>">ee</a>
<a href ="1.php?<?php echo SID;?>">ee</a>//SID cookie 开启时 值为空,cookie禁用时,值为session_id
seesion_set_save_handle()   存储在redis  memcache  mysql 等。

共享session 信息

 

http 协议 工作原理 
http状态码
200 成功
301 永久性重定向
302 临时性重定向
303
304
307
400 请求报文中有语法错误
401 发送请求需要进行http认证信息
403 对请求资源被服务器禁止访问
404 找不到请求资源
500 服务器内部错误
503 服务器暂时处于超负载 或在进行停机维护 无法处理请求
osi 七层模型原理 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
物理层:建立、维护、断开物理连接
数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择
传输层:定义传输数据的协议端口号,以及流控和差错校验。TCP UDP 数据包一旦离开网卡即进入网络传输层。
会话层:建立、管理、终止会话
表示层:数据的表示 安全 压缩
应用层:网络服务与最终用户的一个接口。协议有 HTTP、FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

HTTP协议的工作特点和工作原理
特点:基于B/S模式;通信开销小、简单快捷、传输成本低;使用灵活、可使用超文本传输协议;节省传输时间;无状态;
原理:客户端发送请求给服务器,创建一个TCP连接,指定端口号,默认80,连接到服务器,服务器监听浏览器请求,一旦监听到客户端请求,分析请求类型后,服务器会向客户端返回状态信息和数据内容。
HTTP协议常见请求/响应头
content-type、accept、origin、cookie、cache-control、user-agent、Referer、X-Forwarded-For、access-control-allow-origin、last-modified
HTTP协议的请求方法:get、post、head、options、put、delete、trace

HTTPS是一种基于SSL/TLS的HTTP协议,所有的HTTP数据都是在SSL/TLS协议封装之上传输的。
HTTPS协议在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。
FTP 文件传输协议 21
telnet 远程登录 23
smtp 简单邮件服务器 25 pop3 接收邮件 110
HTTP 超文本传输协议 80
DNS 域名解析 53





posted @ 2018-10-17 13:06  玲汐  阅读(219)  评论(0编辑  收藏  举报