PHP面试题(二)
前言
PHP的gc机制
- 引用计数refcount和is_ref,也就是php不会随意的malloc内存空间,而是用类似c的指针的方式,增加引用计数,引用计数为0就free掉变量,每个变量在底层实现都是一个在zval的结构体
- php5.3之前无法解决循环引用计数的问题,会导致内存泄漏.php5.3以后,采用深度优先遍历解决了这个问题,具体实现细节我也不清楚
PHP实现单链表
<?php /**
* 用class模拟struct,实现链表节点定义
*/
class Node
{ /**
* 数据
*/
public $data; /**
* 下一个节点
*/
public $next; public function __construct ($data, $next = null)
{
$this->data = $data;
$this->next = $next;
}
} class LinkList
{ public $head; public function __construct ()
{
$this->head = null;
} /**
* 尾插法实现链表插入操作
*
* @param int $value
*/
public function insertNode ($value)
{
$cur = $this->head;
$pre = null; while ($cur != null) {
$pre = $cur;
$cur = $cur->next;
} $new = new Node($value);
$new->next = null; if ($pre == null) {
$this->head = $new;
} else {
$pre->next = $new;
}
} /**
* 单链表中删除指定节点
*
* @param int $value
*/
public function deleteNode ($value)
{
$cur = $this->head;
$pre = null; while ($cur != null) {
if ($cur->data == $value) {
if ($pre == null) {
$this->head->next = $cur->next;
} else {
$pre->next = $cur->next;
}
break;
}
$pre = $cur;
$cur = $cur->next;
}
} /**
* 打印单链表
*/
public function printList ()
{
$cur = $this->head;
while ($cur->next != null) {
printf("%d ", $cur->data);
$cur = $cur->next;
}
printf("%d\n", $cur->data);
}
} // 测试
$list = new LinkList();
$list->insertNode(1);
$list->insertNode(2);
$list->insertNode(3);
$list->insertNode(4);
$list->insertNode(5);
$list->insertNode(6); $list->printList(); $list->deleteNode(4);
$list->printList();
PHP实现字符串反转
<?php function strReverse(&$str)
{
for ($i = 0, $j = strlen($str); $i <= $j; $i ++, $j --) {
$tmp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $tmp;
}
} $str = "wangzhengyi";
strReverse($str);
echo $str;
PHP变量的内部实现
- 强类型语言是一旦某个变量被申明为某个类型的变量,在程序运行过程中,就不能将该变量的类型以外的值赋予给它,c/c++/java等语言就属于这类
- php及ruby,javascript等脚本语言就属于弱类型语言:一个变量可以表示任意的数据类型
php变量类型及存储结构
PHP面试题(二)的更多相关文章
- 数据库基础SQL知识面试题二
数据库基础SQL知识面试题二 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.选课系统SQL语法练习 course数据库中有以下四张表: •students表(学生表): si ...
- C/C++常考面试题(二)
网上看到的面经,说是dynamic_cast的实现,和RTTI的相关,这才发现原来对这个概念这么模糊,所以作了这个总结. C/C++常考面试题(二) RTTI(Runtime Type Informa ...
- php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结)
php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结) 一.总结 从外到内解决网站大流量高并发问题---从提交一个url开始(从用户按下搜索栏回车键开始) url最开始会到d ...
- php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)
php开发面试题---2.php常用面试题二(表单提交方式中的get和post有什么区别) 一.总结 一句话总结: 数据位置:get参数在url里面,post在主体里面 数据大小:get几kb,pos ...
- C++经典面试题(二)
近期看一些面试题,认为假设自己被问到了,并不能非常利落的回答出来. 一是从来没有这个意识,二是没有认真的梳理下. 以下对这些题做出分析,哈!个人能力有限,当中难免有疏漏,欢迎大家补充咯. 11.引用与 ...
- JAVA面试题二
JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...
- Java面试题(二)
系统整理了一下有关Java的面试题,包括基础篇,javaweb篇,框架篇,数据库篇,多线程篇,并发篇,算法篇等等,陆续更新中.其他方面如前端后端等等的面试题也在整理中,都会有的. 注:文末有福利! 1 ...
- Java常考面试题(二)
序言 昨天刚开始的”每日5题面试“这类文章,感觉还不错,把一些平常看似懂了的东西,弄清楚了.就像什么是虚拟机?这个问题,看起来知道,但是要说出个所以然来,又懵逼了,经常回过头来看看做过的面试题,试着用 ...
- C# 面试题 二
1.进程和线程的区别 进程是系统进行资源分配和调度的单位:线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源. 2.成员变量和成员函数前加static的作用 它们被称为常 ...
- python面试题(二)
最近参加了几场招聘,发现好多人的一些基础知识不是很扎实,做的题很多都是错误的,因此找了一些我们公司面试过程中的一些最基本的面试题供大家参考,希望各位都能找到一个好的工作.今天给大家先分享的是关于Pyt ...
随机推荐
- PIL安装记录,编译支持jpeg png
PIL是python理想的图片处理module,但是想要良好的支持各种图片,还需要检查一下几步,否则会提示:IOError: decoder jpeg not available之类的. 我的环境:L ...
- awr相关指标解析
awr相关指标解析 2016年11月11日 15:09
- iOS socket编程
// // ViewController.m // socket // // Created by emerys on 16/3/2. // Copyright © 2016年 Emerys. All ...
- Composite 模式的实现
实现要点: 1.组合模式采用树形结构来实现普遍存在的对象容器,从而将“一对多”的关系转化“一对一”的关系,使得客户代码可以一致地处理对象和对象容器,无需关心处理的是单个的对象,还是组合的对象容器. 2 ...
- MySQL数据库服务器 主从配置
A B 为两台 MySQL 服务器,均开启二进制日志,数据库版本 MySQL 5.5 一.服务器参数 [A 服务器 192.168.1.100] server-id = 1 binlog-do-d ...
- frame,bounds,center-三者的含义
frame与bounds的区别比较 frame,bounds,center-三者的含义 偶然觉的,这三个属性有时候定位的时候,需要用.于是就来搞清楚,到底frame,bounds,center 这三个 ...
- Objective-C基础 便利构造器 单例模式1-17
Objective-C基础 便利构造器 单例模式1-17 便利构造器 单例模式 1.在声明时指定setter或getter方法,则用点运算符方法调用时默认调用的就是自己指定的方法2.单例:唯一性,如: ...
- Leetcode:Repeated DNA Sequences详细题解
题目 All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: " ...
- 【HDOJ】3085 Nightmare Ⅱ
双向BFS.注意,任何一个点出队后,首先需要考虑ghost. /* 3085 */ #include <iostream> #include <queue> #include ...
- Entropy (huffman) 优先队列)
http://acm.hdu.edu.cn/showproblem.php?pid=1053 Huffman问题利用STL中的priority_queue解决: #include<stdio.h ...