很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家(11年架构师带你解读年薪50万面试通关秘籍。)
如果喜欢我的文章,想与一群资深开发者一起交流学习的话,获取更多相关大厂面试咨询和指导,欢迎加入我的学习交流群点击此处PHP高级交流
38、PHP遍历文件夹下所有文件
1 <?php
2 function read_all($dir){
3 if(!is_dir($dir)) return false;
4 $handle = opendir($dir);
5 if($handle){
6 while(($fl = readdir($handle)) !== ){
7 $temp = $dir.$fl;
8 //$fl !='.' && $fl != '..' 排除当前目录及父级目录
9 if(is_dir($temp) && $fl!='.' && $fl != ..'10 echo 目录:'.$temp.<br>11 read_all($temp);
12 }else{
13 if($fl !=14 echo 文件:15 }
16 }
17 }
18 }
19 }
20 read_all("./dir/");
21 ?>
?
39、在命令行中运行php程序 php indx.php A、从命令行运行php非常简单。但有些注意事项需要各位了解下,诸如$_SESSION之类的服务器变量是无法在命令行中使用的,其他代码的运行则和web服务器中完全一样; B、在命令行中执行php文件的好处之一就是可以通过脚本实现一些计划任务(crontab)的执行,而无须通过web服务器。
延伸1: php -v 显示当前PHP版本 php -m 显示当前php加载的有效模块 php -i 输出无html格式的phpinfo php --rf function
延伸2:向php脚本传递参数: 提示:命令行下执行php,是不走Apache/Nginx等这类东西的,没有什么http协议,所以get,post传参数根本不起作用,并且还会报错。有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
A、使用$argv or $argc参数接收 echo "接收到{$argc}个参数"; print_r($argv); ?>
B、使用getopt函数 $param_arr = getopt('a:b:'); print_r($param_arr); ?>
C、提示用户输入 fwrite(STDOUT,'Please enter your name:'); echo 'Your name is:'.fgets(STDIN); ?>
40、你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在? A、PHP脚本的执行效率 a、代码脚本里计时; b、xdebug统计函数执行次数和具体时间进行分析,最好使用工具winCacheGrind分析; c、在线系统用strace跟踪相关进程的具体系统调用。
B、数据库SQL的效率 a、sql的explain(mysql),启用slow query log记录慢查询; b、通常还要看数据库设计是否合理,需求是否合理等。
41、对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题。 A、确认服务器是否能支撑当前访问量; B、优化数据库访问; C、禁止外部访问链接(盗链),比如图片防盗链; D、控制文件下载,尤其是大文件; E、使用不同主机分流(负载均衡); F、使用浏览统计软件,了解访问量,有针对性的进行优化。
42、 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? A、设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率; B、选择合适的表字段数据类型和存储引擎,适当的添加索引; C、mysql库主从读写分离; D、找规律分表,减少单表中的数据量提高查询速度; E、添加缓存机制,比如memcached,redis等; F、不经常改动的页面,生成静态页面; G、书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1,field_2,field_3 FROM TABLE。
43、Mysql的存储引擎,myisam和innodb的区别。 A、MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持; B、MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快; C、InnoDB不支持FULLTEXT类型的索引; D、InnoDB中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可; E、对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引; F、DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除; G、LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用; H、MyISAM支持表锁,InnoDB支持行锁。
MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。 InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。
?
其他,主要是一些面试后的个人看法和玄学了:
1.很多在职的同学觉得请假面试麻烦,其实现在很多公司都有安排晚上面试和周末面试专场的,提前沟通好就行了,请假的话一天面试三家应该不是问题。 (编辑:应用网_丽江站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|