阿里电话面试总结(PHP研发工程师)2015

今天接到了阿里的电话面试,感觉很是激动,趁着还有些印象我就总结一下吧,分享给有需要的同学!

简单的自我介绍

毫无特色的自我介绍:我叫张XX….balabala…感觉不到一分钟

说一下二分查找的思想

前提::线性表中记录必须是有序的,线性表采用顺序存储

原理:在有序表中,取中间记录作为比较对象,若给定的值和中间记录的关键字相同,则查找成功;如果查找对象小于中间记录的关键字,则在中间记录的左半部分继续查找;否则在右半区查找.

时间复杂度: O(log(n))

如何判断链表中是否有环

原理:用两个指针,pSlow,pFast,就是一个慢一个快 慢的一次跳一步, 快的一次跳两步, 什么时候快的追上慢的了(就是pSlow == pFast || pSlow->next == pFast),就表示有环。 代码如下:

#include <stdio.h>typedef struct Node{int val;Node *next;}Node,*pNode;//判断是否有环bool isLoop(pNode pHead){pNode fast = pHead;pNode slow = pHead;( fast fast->next != NULL){fast = fast->next->next;slow = slow->next;//如果有环,则fast会超过slow一圈if(fast == slow){break;}}fast->next == NULL ){return false;}else{return true;} }//计算环的长度int loopLength(pNode pHead){if(isLoop(pHead) == false)return 0;pNode fast = pHead;pNode slow = pHead;int length = 0;bool begin = false;bool agian = false;fast->next != NULL){fast = fast->next->next;slow = slow->next;)break;){begin = true;agian = true;})++length;}return length;}//求出环的入口点Node* findLoopEntrance(pNode pHead){pNode fast = pHead;pNode slow = pHead;fast->next != NULL){fast = fast->next->next;slow = slow->next;//如果有环,则fast会超过slow一圈if(fast == slow){break;}}fast->next == NULL)return NULL;slow = pHead;while(slow != fast){slow = slow->next;fast = fast->next;}return slow;}说一下cookie和session的区别如果把cookie 禁掉session还能用吗?session都是可以存在哪?

数据库、缓存、文件

PHP 如何获取客户端的IP地址?

$_SERVER[‘REMOTE_ADDR’] :通过全局数组来获得 getenv(‘REMOTE_ADDR’) :通过环境变量来获得

用$_SERVER获取的IP地址有什么问题?

当客户机使用代理的时候获取不到真实的IP地址

isset()和array_key_exists()有什么区别?

对于数组值的判断不同,对于值为null或”或false,isset返回false,array_key_exists返回true 执行效率不同,isset是内建运算符,array_key_exists是php内置函数,isset要快一些 当用isset访问一个不存在索引数组值时,不会引起一个E_NOTICE的php错误消息 array_key_exists 会调用get_defined_vars判断数组变量是否存在,isset不用

HTTP请求头和相应头信息都有哪些?

请求头: Accept: text/html,image/*(浏览器可以接收的类型) Accept-Charset: ISO-8859-1(浏览器可以接收的编码类型) Accept-Encoding: gzip,compress(浏览器可以接收压缩编码类型) Accept-Language: en-us,zh-cn(浏览器可以接收的语言和国家类型) Host: :80(浏览器请求的主机和端口) If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(某个页面缓存时间) Referer: (请求来自于哪个页面) User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)(浏览器相关信息) Cookie:(浏览器暂存服务器发送的信息) Connection: close(1.0)/Keep-Alive(1.1)(HTTP请求的版本的特点) Date: Tue, 11 Jul 2000 18:23:51 GMT(请求网站的时间)

响应头: Location: (控制浏览器显示哪个页面) Server:apache tomcat(服务器的类型) Content-Encoding: gzip(服务器发送的压缩编码方式) Content-Length: 80(服务器发送显示的字节码长度) Content-Language: zh-cn(服务器发送内容的语言和国家名) Content-Type: image/jpeg; charset=UTF-8(服务器发送内容的类型和编码类型) Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务器最后一次修改的时间) Refresh: 1;url=http://www.it315.org(控制浏览器1秒钟后转发URL所指向的页面) Content-Disposition: attachment; filename=aaa.jpg(服务器控制浏览器发下载方式打开文件) Transfer-Encoding: chunked(服务器分块传递数据到客户端) Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务器发送Cookie相关的信息) Expires: -1(服务器控制浏览器不要缓存网页,默认是缓存) Cache-Control: no-cache(服务器控制浏览器不要缓存网页) Pragma: no-cache(服务器控制浏览器不要缓存网页) Connection: close/Keep-Alive(HTTP请求的版本的特点) Date: Tue, 11 Jul 2000 18:23:51 GMT(响应网站的时间)

说一下HTTP常用的状态码并解释涵义

一些常见的状态码为: 200 – 服务器成功返回网页 304 – 未修改 403 – 服务器拒绝请求 404 – 请求的网页不存在 502 – 网关错误 503 – 服务器超时

详解:常用的HTTP状态码

HTTP常见的请求类型都有哪些?区别是什么?说一下PHP中的error_reporting是干嘛用的

error_reporting() 设置 PHP 的报错级别并返回当前级别。

说一下错误界别都是有哪些,如何自定义错误处理级别? 后来逐渐有广州花城的,

阿里电话面试总结(PHP研发工程师)2015

相关文章:

你感兴趣的文章:

标签云: