常见面试内容
技术线(偏深度):
- 基础知识,比如数据结构,多线程,I/O,Http协议等
- 语言深度,比如PHP的运行机制,性能优化,APC(以及其原理等)
- 源码阅读,比如看过哪些框
写出一下各段代码的输出结果:
1.
1
2
3
4
5
6
7$a = (1 < < 0);
$b = (1 < < $a);
$c = (1 < < $b);
echo ($c
$b) < < 2 * $a
$a;echo '1'.print(2)+3;
3
1
2
3
4
5$a = 0x01;
$b = 0x02;
echo $a===$b > > $a;
$foo = 5 + '10 things';print (196*100) !== (double)1960;
echo 0500
$a = 0; echo ~$a;
数据库
- 解释一下SQL注入的原理及危害,假设这里有一个不严谨的登陆程序,如何利用SQL注入进入。
- 解释一下跨站脚本的原理及危害,假设这里有一个不严谨的留言板,请构造跨站脚本范例。
- 解释一下数据索引为什么能提高效率。
场景SQL select * from user where area='广州‘ and sex='女‘ order by lastlogin desc limit 30;
- 解释一下数据索引为什么能提高效率。
- 4.如何设计索引?
- 5.现在有10万条 IP地址对应区间表,格式为
startip, endip, area
要求每个用户访问时都能快速分析出对方地区,请设计实现。数据库或不用数据库,要求每秒钟实现超过千次的查询。
基本上到这些对我而言就已经足够了,如果上面题目特别满意的,再附加 - 现在有一个屏蔽词列表,大约几千个词;假设有一个繁忙的论坛社区,发帖量巨大,要求用户每发一篇文章就要快速分析是否包含屏蔽词,请给出程序设计。
- 一个游戏网站,有数千个小游戏,每个游戏要做积分排行,数据结构如下
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