PHP常见面试材料

常见面试内容

技术线(偏深度):

    1. 基础知识,比如数据结构,多线程,I/O,Http协议等
    1. 语言深度,比如PHP的运行机制,性能优化,APC(以及其原理等)
    1. 源码阅读,比如看过哪些框

写出一下各段代码的输出结果:

  • 1.

    1
    2
    3
    4
    5
    6
    7
    $a = (1 < < 0);
    $b = (1 < < $a);
    $c = (1 < < $b);
    echo ($c

    $b) < < 2 * $a
    $a;
    1. echo '1'.print(2)+3;
  • 3

    1
    2
    3
    4
    5
    $a = 0x01;
    $b = 0x02;
    echo $a===$b > > $a;

    $foo = 5 + '10 things';
    1. print (196*100) !== (double)1960;
    1. echo 0500
    1. $a = 0; echo ~$a;

数据库

    1. 解释一下SQL注入的原理及危害,假设这里有一个不严谨的登陆程序,如何利用SQL注入进入。
    1. 解释一下跨站脚本的原理及危害,假设这里有一个不严谨的留言板,请构造跨站脚本范例。
    1. 解释一下数据索引为什么能提高效率。
      场景 SQL select * from user where area='广州‘ and sex='女‘ order by lastlogin desc limit 30;
  • 4.如何设计索引?
  • 5.现在有10万条 IP地址对应区间表,格式为 startip, endip, area
    要求每个用户访问时都能快速分析出对方地区,请设计实现。数据库或不用数据库,要求每秒钟实现超过千次的查询。
    基本上到这些对我而言就已经足够了,如果上面题目特别满意的,再附加
    1. 现在有一个屏蔽词列表,大约几千个词;假设有一个繁忙的论坛社区,发帖量巨大,要求用户每发一篇文章就要快速分析是否包含屏蔽词,请给出程序设计。
    1. 一个游戏网站,有数千个小游戏,每个游戏要做积分排行,数据结构如下
      gameid,userid,gamescore
  • 8.每天数百万积分提交,数据量巨大,目前要求分库处理。
    要求,可以基于每个游戏id可以查询积分排行榜。 可以基于用户id查询,比如自己或好友的历史游戏积分记录。请问如何处理分库。

专业程度体现在对PHP的基本功的掌握和一些进阶知识的了解,比如对常见性能点、不同版本特性等,session的实现机制、include/require的差异,进一步的主流框架掌握程度、常见的性能优化策略、其作为脚本语言所具备的一些特性、如何规避PHP的性能劣势打造高并发的系统、如何保证高并发下的可用性和数据完整性等等。

周边知识主要会包括MySQL性能优化、Memcache使用、Nginx/Apache的配合、对于PV/Click等数据收集和观察的方法等。 同样的,利用curl/socket操作http/tcp/udp,进一步的RPC调用(Web Service/JSONP/Thrift等)的前后端实现,进一步的包括更多的Cache策略(远近、一致性哈希、数据一致性)、对Sharding即分库分表之类操作的了解、更多NoSQL产品知识、各类常见协议细节、安全性(注入和旁注、跨站和CC)等。


  • 0.简单做一下自我介绍,? 然后谈一下近三年来你的得意之作?
  • 1.看看简历,会问一些过去做的项目的用户量、pv、吞吐量、相关难点和解决方法等
  • 2.数据库设计经验,为什么进行分表? 分库?
    一般多少数据量开始分表? 分库? 分库分表的目的? 什么是数据库垂直拆分? 水平拆分? 分区等等?可以举例说明
  • 3.数据库优化有哪些? 分别需要注意什么?
  • 4.web开发方面会遇到哪些缓存? 分别如何优化?
  • 5.给你256M的内存,对10G的文件进行排序(文件每行1个数字),如何实现?
    对10G的文件进行查找如何实现?
    统计10G文件每个关键字出现的次数如何实现?
  • 6.假如你现在是12306火车订票的设计师,你该如何设计满足全国人民订票?
  • 7.假如有1亿用户的访问量,你的服务器架构是怎样的? 用户信息的存储方案如何设计?
  • 8.如果你是技术组长,所带团队任务进度无法完成你该如何解决?
    如果在进度排满的前提下插入任务,你该如何保证总进度不延期?
    如果有的工程师今天预定任务没有完成,你该如何解决?
  • 9.从你的经验方面谈一下如何构建高性能web站点? 需要哪些环节? 步骤? 每个步骤需要注意什么如何优化等?
  • 10.为什么要对数据库进行主从分离?
  • 11.如何处理多服务器共享session?
  • 12.一个10G的表,你用php程序统计某个字段出现的次数,思路是?
  • 13.会告诉你一个nginx日志例子,用你认为最佳的编程语言统计一下http响应时间超过1秒的前10个url?
  • 14.给你一个mysql配置文件,用你认为最佳的编程语言解析该文件?
  • 15.给你两个路径a和b,写一个算法或思路计算a和b差距几层并显示a和b的交集?
  • 16.给你一个url,在nginx配置一下rewrite指定到某个具体路径?
  • 17.一个php文件的解释过程是? 一般加速php有哪些? 提高php整体性能会用到哪些技术?
  • 18.session和cookie生存周期区别? 存储位置区别?
  • 19.require、include、require_once、include_once区别? 加载区别? 如果程序按需加载某个php文件你如何实现?
  • 20.chrome号称为多线程的,所以多线程和多进程的区别为?
  • 21.php在2011年底出现hash碰撞,hash碰撞原理为? 如何进行修复?
  • 22.web不安全因素有哪些? 分别如何防范?
  • 23.假如两个单链表相交,写一个最优算法计算交点位置,说思路也可以?
  • 24.假如你是技术组长? 如何提高团队效率?
  • 25.nginx负载均衡有哪些? 如果其中一台服务器挂掉,报警机制如何实现?
  • 26.不优化前提下,apache一般最大连接数为? nginx一般最大连接数为? mysql 每秒insert ? select ? update ? delete?
  • 27.mysql 数据类型有哪些 ? 分别占用多少存储空间 ?
  • 28.nginx设置缓存js、css、图片等信息,缓存的实现原理是?
  • 29.如何提高缓存命中率? 如何对缓存进行颗粒化?
  • 30.php的内存回收机制是?
  • 31.我的所有问题都问完了,你有什么问题问我没有?

  • 32.请使用shell命令获取a文件的前10行与后10行的数据,将其放进b文件中。

  • 33.如何设计安全的php程序,可以防止SQL攻击。
  • 34.这里有一个sql语句,select id from table where a=? order by b,请你就句子判断,建立索引,使其能够在innodb和myisam引擎下,查询效果都可以加快。
  • 35.有一天,突然有一个用户投诉,说网页打不开,你该如何进行排查?
  • 36.何对一个亿级数据的表按照一个没有索引的字段进行统计

php实现扩展的机制

全站消息系统

消息队列

PHP的数组为什么不按照索引遍历

http://blog.sina.com.cn/s/blog_60d07c3101010m2h.html

http://www.php-note.com/article/detail/546

http://my.oschina.net/u/574366/blog/64814

Thanks for reading.