十个PHP 高级工程经典口试题
1.PHP 怎样实现不消自带的 cookie 函数为客户端下发 cookie。对付漫衍式体系,怎样来生涯 session 值。这个题有点绕。考的照旧 COOKIE 和 SESSION 的基本常识。处事端通过 set-cookie 呼吁来关照客户端生涯 cookie。 只要凭证 domain path 逾期时刻等法则 用 header 函数就可以实现。 漫衍式体系 session,齐集处理赏罚。按我们公司的架构,为了实现高可用和高容灾,提供一个漫衍式的验签处事。详细的可以看下 redis 的漫衍式处事架构。 2、数据库中的存放了用户 ID,扣费许多行,redis 中存放的是用户的钱包,此刻要写一个剧本,将数据库中的扣费记录同步到 redis 中,每 5 分钟执行一次。叨教要思量哪些题目?思绪:出产者和斲丧者模式。这个题目也没有说其他的状态,好比数据库的数据会及时增进么?redis 中每个钱包是否有其他处事在读取可能写入啊。什么的。数据库和 REDIS 放一路,要么考数据同等性,要么考呈现锁,导致服从低落。 3、按照 access.log 文件统计最近 5 秒的 qps,并以如下名目表现,01 1000(难点在 01 序号)
4.redis 是怎样举办同步的,同步的方法,同步回滚怎么办,数据非常怎么办,同时会问 MYSQL 的同步方法和相干非常环境redis 集群主从同步的简朴道理 Redis 的复制成果是基于内存快照的耐久化计策基本上的,也就是说无论你的耐久化计策选择的是什么,只要用到了 Redis 的复制成果,就必然会有内存快照产生。 当 Slave 启动并毗连到 Master 之后,它将主动发送一个 SYNC 呼吁 (起首 Master 会启动一个靠山历程,将数据快照生涯到文件中 [rdb 文件] Master 会给 Slave 发送一个 Ping 呼吁来判定 Slave 的存活状态 当存活时 Master 会将数据文件发送给 Slave 并将全部写呼吁发送到 Slave )。 Slave 起首会将数据文件生涯到当地 之后再将 数据 加载到内存中。 当第一次链接 可能是 妨碍后 从头毗连 城市先判定 Slave 的存活状态 在做所稀有据的同步 , 之后只会同步 Master 的写操纵 (将呼吁发送给 Slave) ? 题目: 当 Master 同步数据时 若数据量较大 而 Master 自己只会启用一个靠山历程 来对多个 Slave 举办同步 , 这样 Master 就会压力过大 , 并且 Slave 规复的时刻也会很慢! ? redis 主从复制的利益: (1)在一个Redis集群中,master认真写哀求,slave认真读哀求,这么做一方面通过将读哀求分手到其他呆板从而大大镌汰了master处事器的压力,另一方面slave专注于提供 ? 5.两台 mysql 处事器,个中一台挂了,怎么让营业端无感切换,并担保正常环境下讲台处事器的数据是同等的不是焦点营业的话,先停写,把备机拉起来,查察两台呆板的日记,举办数据赔偿,开写。 假如是焦点营业的话,此刻全部的写操纵都在正常的状态呆板上。把好的这台呆板的备机拉起来,当主机。 以上满是应急操纵。现实上数据库的容灾计划要伟大的多。 口试官要是问你,备机的数据纷歧致怎么办,你要大胆怼归去,你们每秒几多写入操纵。凭证百万级表,每秒 1000 的写入服从,正常的计划是,漫衍在 2 台呆板上每台 500。这个级此外数据同步,呈现差此外概率 可以忽略不计的。有一台呈现题目,另一台也可以抗住。 (正常的操纵,照旧先停写,等数据同等,切换,开写。我们公司搞这些切换都是在破晓 4.00 阁下,焦点营业的每秒写操纵,只有十几个。前后延误不到 20 秒)。 6.请写出自少三种截取文件名后缀的要领或函数(PHP 原生函数和本身实现函数均可)echo substr(strrchr($file,'.'),1); echo substr($file,strrpos($file,'.')+1); $arr=explode('.',$file); echo $arr[count($arr)-1]; $arr=explode('.',$file); echo end($arr); echo strrev(explode('.',strrev($file))[0]); echo pathinfo($file)['extension']; echo pathinfo($file,PATHINFO_EXTENSION);
? 7.写一个函数,获取一篇文章内容中的所有图片,并下载function download_images($article_url = '',$image_path = 'tmp'){ // 获取文章类容 $content = file_get_contents($article_url); // 操作正则表达式获得图片链接 $reg_tag = '/<img.*?"([^"]*(jpg|bmp|jpeg|gif|png)).*?>/'; $ret = preg_match_all($reg_tag,$content,$match_result); $pic_url_array = array_unique($match_result1[1]); // 建设路径 $dir = getcwd() . DIRECTORY_SEPARATOR .$image_path; mkdir(iconv("UTF-8","GBK",$dir),0777,true); foreach($pic_url_array as $pic_url){ // 获取文件信息 $ch = curl_init($pic_url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_NOBODY,CURLOPT_SSL_VERIFYPEER,FALSE ); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,CURLOPT_RETURNTRANSFER,1); $fileInfo = curl_exec($ch); $httpinfo = curl_getinfo($ch); curl_close($ch); // 获取图片文件后缀 $ext = strrchr($pic_url,'.'); $filename = $dir . '/' . uniqid() . $ext; // 生涯图片信息到文件 $local_file = fopen($filename,'w'); if(false !== $local_file){ if( false !== fwrite($local_file,$filecontent) ){ fclose($local_file); } } } }
10 瓶水,个中一瓶有毒,小白鼠喝完有毒的水之后,会在 24 小时后衰亡,问:最罕用几只小白鼠可以在 24 小时后找到详细是哪一瓶水有毒。四只 二进制题目。薛定谔的老鼠。 一只老鼠有两个状态,死活,对应 01。假设老鼠的个数为 A,则有 2^A>=10; A=4; 思绪很简朴,十瓶药编号:0,1,10,11....1001; 0 不喝。第一只老鼠喝全部个位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。 24 小时后,看下死了的是 1,在世的是 0。按老鼠的次序乖乖站好…… 若是第一只和第三只死了,那就是 0101,就是 5 有题目。 ? (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |