这里总结一些高级一点的题
算法
基本排序算法要会写,时间复杂度要会推算, 主要是冒泡排序, 快速排序, 选择排序.
查找算法,要会写二分查找法, 实际场景要会应用.
实例算法思路要明白,基本算法看多了, 我觉得是几种思路的变换, 需要自己领悟.
猴子选大王
一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。
1 |
|
1 |
|
斗地主项目设计
实现单链表与双链表
实现有权重的随机算法
PHP知识
说说php的魔术常量, 要能全部说出来
1 | __LINE__ 文件中的当前行号。 |
php的设计模式, 要能清晰说出单例, 工厂, 注册模式的实际应用.
- 单例模式
使某个类的对象仅允许创建一个
- 工厂模式
工厂模式 是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。
- 注册模式
主要用来解决全局共享和交换对象
session与cookie的区别及如何解决session的跨域共享.
session sticky
: 会话保存在单机上, 保证会话请求落在同一台服务器上session replication
: session 复制 每一台服务器上都保持一份相同的session (造成额外的存储开销和网络开销)session 集中存储
: 存储在db、 存储在缓存服务器 (redis)- 基于cookie (主流)
如何防止sql注入及数据安全问题
php的生命周期, 启动流程, 多看TIPI.
TIPI 深入理解PHP内核: Thinking In PHP Internals
php的垃圾回收机制, php变量,数组 c源代码如何实现.
- PHP 5 的内存回收原理?
- PHP 7 的垃圾回收和 PHP 5 有什么区别?
PHP5和PHP7的垃圾回收机制都属于引用计数,但是在复杂数据类型的算法处理上:
在 PHP7 中 zval 有了新的实现方式。最基础的变化就是 *zval 需要的内存不再是单独从堆上分配,不再自己存储引用计数。复杂数据类型(比如字符串、数组和对象)的引用计数由其自身来存储。这种实现方式有以下好处:
简单数据类型不需要单独分配内存,也不需要计数
不会再有两次计数的情况。在对象中,只有对象自身存储的计数是有效的;
由于现在计数由数值自身存储,所以也就可以和非 zval 结构的数据共享,比如 zval 和 hashtable key 之间
- PHP 7 中哪些变量类型在栈,哪些变量类型在堆?
在PHP5的Zend Engine的实现中,所有的值都是在堆上分配空间,并且通过引用计数和垃圾收集来管理.
PHP5的Zend Engine主要使用指向zval结构的指针来操作值,在很多地方甚至通过zval的二级指针来操作.
而在PHP7的Zend Engine实现中,值是通过zval结构本身来操作(非指针).
新的zval结构直接被存放在VM[虚拟机?]的栈上,HashTable的桶里,以及属性槽里.
这样大大减少了在堆上分配和释放内存的操作,还避免了对简单值的引用计数和垃圾收集.
- 变量在栈会有什么优势?PHP 7是如何让变量新建在栈的?
fastcgi 比 php-cgi 的优势在哪里?
CGI
CGI 全称是“公共网关接口”(Common Gateway Interface),HTTP 服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
FastCGI
FastCGI 像是一个常驻(long-live)型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次(这是 CGI 最为人诟病的 fork-and-execute 模式)。
它还支持分布式的运算,即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
FastCGI 是语言无关的、可伸缩架构的 CGI 开放扩展,其主要行为是将 CGI 解释器进程保持在内存中并因此获得较高的性能。
PHP-CGI
PHP-CGI 是 PHP 自带的 FastCGI 管理器。
PHP-FPM
PHP-FPM 是一个 PHP FastCGI 管理器,是只用于 PHP 的,可以在 http://php-fpm.org/download 下载得到。
Spawn-FCGI
Spawn-FCGI 是一个通用的 FastCGI 管理服务器,它是 Lighttpd 中的一部分,很多人都用 Lighttpd 的 Spawn-FCGI 进行 FastCGI 模式下的管理工作,不过有不少缺点。而 PHP-FPM 的出现多少缓解了一些问题,但 PHP-FPM 有个缺点就是要重新编译,这对于一些已经运行的环境可能有不小的风险,在 PHP 5.3.3 中可以直接使用 PHP-FPM了。
Spawn-FCGI 目前已经独成为一个项目,更加稳定一些,也给很多 Web 站点的配置带来便利。
你用过那些框架, 各自有什么优缺点.
php运行模式有几种,分别是什么.
JIT 是做了哪些优化,从而对PHP的速度有不少提升?
JIT 的思想很简单,即在程序运行时动态对程序进行编译,生成平台相关的机器码(比如运行它的机器 CPU 的本地代码),从而加快程序的运行速度。
在 PHP 中,JIT 将为 Zend Vm 生成的指令作为中间表示,并发出依赖于体系结构的机器代码,这样代码的宿主就不再是 Zend Vm,而是直接由 CPU 发出。