PHP 高级面试115题汇总(含答案)
|
副标题[/!--empirenews.page--]
1、给你四个坐标点,判断它们能不能组成一个矩形,如判断 ([0,0],[0,1],[1,0]) 能组成一个矩形。 2、写一段代码判断单向链表中有没有形成环,如果形成环,请找出环的入口处,即 P 点 1 /*
2 *单链表的结点类
3 */
4 class LNode{
5 //为了简化访问单链表,结点中的数据项的访问权限都设为public
6 public int data;
7 public LNode next;
8 }
9
10 class LinkListUtli {
11 //当单链表中没有环时返回null,有环时返回环的入口结点
12 public static LNode searchEntranceNode(LNode L)
13 {
14 LNode slow=L;//p表示从头结点开始每次往后走一步的指针
15 LNode fast=L;//q表示从头结点开始每次往后走两步的指针
16 while(fast !=null && fast.next !=null)
17 {
18 if(slow==fast) break;//p与q相等,单链表有环
19 slow=slow.next;
20 fast=fast.next.next;
21 }
22 if(fast==null || fast.next==null) return null;
23
24 // 重新遍历,寻找环的入口点
25 slow=L;
26 while(slow!=fast)
27 {
28 slow=slow.next;
29 fast=fast.next;
30 }
31
32 return slow;
33 }
34 }
35 3、写一个函数,获取一篇文章内容中的全部图片,并下载
36
37 function download_images($article_url = '',$image_path = 'tmp'){
38
39 // 获取文章类容
40 $content = file_get_contents($article_url);
41
42 // 利用正则表达式得到图片链接
43 $reg_tag = '/<img.*?"([^"]*(jpg|bmp|jpeg|gif|png)).*?>/';
44 $ret = preg_match_all($reg_tag,$content,$match_result);
45 $pic_url_array = array_unique($match_result1[1]);
46
47 // 创建路径
48 $dir = getcwd() . DIRECTORY_SEPARATOR .$image_path;
49 mkdir(iconv("UTF-8","GBK",$dir),0777,true);
50
51 foreach($pic_url_array as $pic_url){
52 // 获取文件信息
53 $ch = curl_init($pic_url);
54 curl_setopt($ch,CURLOPT_HEADER,0);
55 curl_setopt($ch,CURLOPT_NOBODY,0);
56 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE );
57 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE );
58 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
59 $fileInfo = curl_exec($ch);
60 $httpinfo = curl_getinfo($ch);
61 curl_close($ch);
62
63 // 获取图片文件后缀
64 $ext = strrchr($pic_url,'.');
65 $filename = $dir . '/' . uniqid() . $ext;
66
67 // 保存图片信息到文件
68 $local_file = fopen($filename,'w');
69 if(false !== $local_file){
70 if( false !== fwrite($local_file,$filecontent) ){
71 fclose($local_file);
72 }
73 }
74 }
75
76 }
? 4、获取当前客户端的 IP 地址,并判断是否在 (111.111.111.111,222.222.222.222) 如果没有使用代理服务器: $ip = $_SERVER['REMOTE_ADDR']; 使用透明代理 $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; ? 5、nginx 的 log_format 配置如下: 1 log_format main ‘remoteaddr?remote_user [timelocal]"request”’ 2 ‘statusbody_bytes_sent “httpreferer"″"http_user_agent” “upstreamresponsetime""request_time” “http_x_forwarded_for"'; ? 从今天的 nginx log 文件 access.log 中: a、列出 “request_time” 最大的 20 行? 6、什么是 CSRF 攻击?XSS 攻击?如何防范? XSS:跨站脚本攻击,可以通过对内容转义和过滤来防范,还有 CSP 7、应用中我们经常会遇到在 user 表随机调取 10 条数据来展示的情况,简述你如何实现该功能。 SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1; ? 8、从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是连续的 9、两条相交的单向链表,如何求它们的第一个公共节点 如果两个链表相交,则从相交点开始,后面的节点都相同,即最后一个节点肯定相同; 10、最长公共子序列问题 LCS,如有 [1,2,5,11,32,15,77] 和 [99,1,77] 两个数组,找到它们共同都拥有的数,写出时间复杂度最优的代码,不能用 array_intersect(这里有坑,需要去研究一下动态规划)。 11、linux 的内存分配和多线程原理 12、MYSQL 中主键与唯一索引的区别 13、http 与 https 的主要区别 (编辑:海洋资讯信息网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



