程序员找工作必备 PHP 基础面试题(二)
1、我们知道 autoload 可以实现类的自动载入,如何把一个类 spldemo 的方法 autoload 注册成为一个__autoload (关键词:spl)
abstract class spldemo {
function __autoload($class){
// ....
}
}
2、下面可以捕获异常吗?如何实现捕获。(关键词:set_error_handler errorexcpetion)
try {
//读取不存在的文件
file_get_contents('/home/not-exists.file');
} catch (exception $e){
echo $e->getmessage();
}
3、根据 span value 的值,排序 li,可以使用 jquery
<ul>
<li><span value="3">三</span></li>
<li><span value="1">一</span></li>
<li><span value="2">二</span></li>
</ul>
<script>
$(function(){
var arr=[];
$('span').each(function(i){
arr[arr.length]=$(this).attr('value')+'-'+$(this).html();
});
//倒叙排序
/*function paixu(num1,num2){
if(num1>num2){
return -1;
}else if(num1==num2){
return 0;
}else{
return 1;
}
}
arr.sort(paixu);*/
arr.sort();
$('li').remove();
for(var i=0;i<arr.length;i++){//字符串切割-
$('ul').append('<li><span value="'+arr[i]+'">'+arr[i].substr(arr[i].indexof('-',2))+'</span></li>');
}
});
</script>
4、分别读取 div 节点 attr 属性值
1) <div attr = "abcd" ></div> // 输出abcd
2) <div attr="abcd\">"></div> // 输出abcd">
javacript 答案:alert($("div:eq(1)").attr("attr"));
5、尽可能多的写出 php 处理字符串函数,并写出他们对应的作用。
- strops () 返回某个字符串在一字符串中首先出现的位置
- strstr () 返回一个字符串在另一个字符串中的第一次出现
- substr()截取字符串
- substr()截取字符串
- trim () 删除字符串两端的空格或其他预定义字符
- str_pad () 把字符串填充为指定的长度
- str_repeat () 重复使用指定字符串
- str_split () 把字符串分割到数组中
- strrev () 反转字符串
- str_shuffle () 随机地打乱字符串中所有字符
- number_format () 通过千位分组来格式化数字
- strtolower () 字符串转为小写
- strtoupper () 字符串转为大写
- strcasecmp () 不区分大小写比较两字符串
6、语句 include 和 require 的区别是什么?为避免多次包含同意文件,可用?语句来代替他们?
include 在包含文件时若出错,仅报出一条错误信息,代码继续执行require 在包含文件时若出错,报出错误信息的同时代码将不会往下执行避免多次包含同一文件,可用 include_once 或者 require_once 语句来代替他们
(1) include () 在执行文件时每次都要进行读取和评估;require () 文件只处理一次 (实际上文件内容替换了 require () 语句)
(2) require () 通常放在 php 脚本程序的最前面 include () 的使用和 require () 一样,一般放在流程控制的处理区段中,php 脚本文件读到 include () 语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化
(3) require () 和 include () 语句是语言结构,不是真正的函数,可以像 php 的其他语言结构一样
(4) require () 包含文件失败,停止执行,给出错误 (致命的);
(5) include () 常用于动态包含。通常是自动加载的文件,即使加载出错,整个程序还是继续执行一个页面声明,另一个页面调用包函文件失败,继续向下执行,返回一条警告
(6) include_once () 和 require_once () 语句也是在脚本执行期间包括并运行指定文件,与 include () require () 唯一的区别是如果文件中的代码已经被包括了,则不会再次包括.
7、使用 php 写一段简单 sql 语句实现增删改查
主机 ip:192.168.1.222
数据库用户名:root
数据库密码:admin123
表名 user
name tel content date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
答案:
a、连接数据库,向user表增加一行数据。
姓名:刘五,电话:18811002233,学历:本科,日期:当下日期
insert into user (name,tel,content,date)values(‘刘五’,’ 18811002233’,’本科’,time())
b、删除姓名为里斯的用户所有信息。
delete from user where name=”里斯”
c、更新手机号码为1333663366用户的学历为“本科”
update user set ‘content’=’本科’where tel=‘1333663366’
d、查处所有姓名为“张三”的内容并打印出来。
$mysql_db=mysql_connect("local","root","pass");
@mysql_select_db("db",$mysql_db);
$result = mysql_query("select * from `user` where name='张三'");
while($rs = mysql_fetch_array($result)){
echo $rs["tel"].$rs["content"].$rs["date"];
}
8、如何修改 session 的生存时间。
方法一:
修改 php.ini 的 session_gc_maxlefttime=9999;
方法二:
$savepath = "./session_save_dir/";
$lifetime = 小时 * 秒;
session_save_path($savepath);
session_set_cookie_params($lifetime);
session_start();
方法三:setcookie () and session_set_cookie_params ($lifetime);
9、用 php 写出显示客户端 ip 与服务器 ip 的代码
答:打印客户端 ip:
echo$_server[‘remote_addr’];
打印服务器 ip:
echo $_server[‘server_addr’];
面试题系列:
更多学习内容请访问:
腾讯t3-t4标准精品php架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)
以上内容希望帮助到大家,很多phper在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、tp6,laravel,yii2,redis,swoole、swoft、kafka、mysql优化、shell脚本、docker、微服务、nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。
上一篇: 母函数及其应用
下一篇: defer 链如何被遍历