php面试中经常会被问到的问题记录总结
技术方面 0.1 大访问量 高并发的解决方案 1 mysql如何分库分表 个人认为,目前掌握难度3颗星。需要比较多的基础知识,可能不需要你实际操作中用过,但理论你必须能说出来
2 php设计模式–很重要–说出你知道的设计模式及使用场景和优势 我认为这是中级程序和初级程序之间,甚至是高级程序和中级程序之间的一个过渡标准,单纯从程序语言方面来讲,能牵扯到设计模式的时候应该已经是稍微有点规模的项目了。当然了,你可能平时不会注意,但实际中在用。可面试的时候你说不出来或理解的不深刻会成为你的减分项,而且是很重要的一点,因为你毕竟是一名程序员而不是DBA或运维,所以属于程序的知识你还是应该掌握更多的。
3 数据库千万级别的数据操作和表设计 4 对索引的理解 5 memcache的理解和底层—类似此类的缓存几乎是必考的,扩展如memchache和redis的区别及实际应用场景 6 redis的使用场景 7队列和堆栈的理解及实际应用场景 8 php多进程 正则表达式的(50%的考中机会,有些面试官会比较看重,因为这是基础,就像操作字符串一样) 什么是面向对象,考中几率50%。直说封装 继承 多态直接淘汰 apache和nginx的区别,以及为什么现在大都选用nginx mysql 优化方法,问的非常笼统,只要考你平时对mysql的运用水平和设计深度,考中几率10000%,只是看考的问题深浅 linux使用情况,要求不想对缓存和mysql这么深,但也是基本的至少计划任务、简单的shell脚本和基本命令你肯定要回 session问题(比如session共享、session和cookie的关系等,这是必考的,几乎是100%) 事物的本质是什么以及应用场景 9 对字符串和数组的操作,必考,没有跳过这两种问题的 以上都是笼统的,但都是必考的,下面是笔试 10 int=intval(int)和int=int+0的区别 intval是强制将变量转换成整型。而+对变量的操作只能是进行相加的运算操作,所以,如果int是整型的话可以正常运算,如果是非数值型,结果为011arr1= array(1,2,3,4,5); arr2=array(6,7,8,9,10,11);vardump(arr1+arr2);的结果是什么12arr1 = array(1,2,3,4,5); foreach(arr1 as &item){echo item;}item = 3; foreach(arr1asitem){echo $item;} 这两次会输出什么
13 php对大文件的操作和linux对大文件的操作—-考中的几率非常大,尤其是前者 14 写一个函数,能够遍历文件夹中所有文件和子文件 这个几乎是必考的 15 表tab_log的结构,id,uid,tm;如何实现查询某天中有三条记录以上的uid select uid,count(*) as num from tab_log group by tm having num > 3 16 error_reporting(“E_ALL”)和ini_set(“display_errors”, “on”)的区别? 后者的权限大于前者,后者是OFF的话,前者就算是E-ALL也没用。 17 echo print print_r的区别 echo 和print的最大的区别是前者是php内置语句,没有返回值,不能用于表达式中比如三元运算符。后者属于函数,打印正确返回true错误返回false. 1?print(1):6; 正确,但使用echo是错误的。 —持续更新 最后,终极问题,谈谈你对面向对象的理解,呵呵 总体来说,面试要比笔试重要的多(前提是面试官不忙,你如果笔试题答的不好可能直接就没有面试机会了),只要你面试发挥的好一切都不是问题,可是,可是,可是,你面试发挥的好,面试能发挥的不好吗哈哈,万物皆有共性,好多事都是相辅相成的