PHP基础面试题

1.说10个数组函数
array_values( a r r ) ; 获 得 数 组 的 值 a r r a y k e y s ( arr);获得数组的值 array_keys( arr);arraykeys(arr);获得数组的键名
array_flip( a r r ) ; 数 组 中 的 值 与 键 名 互 换 ( 如 果 有 重 复 前 面 的 会 被 后 面 的 覆 盖 ) i n a r r a y ( " a p p l e " , arr);数组中的值与键名互换(如果有重复前面的会被后面的覆盖) in_array("apple", arr);inarray("apple",arr);在数组中检索apple
array_search(“apple”, a r r ) ; 在 数 组 中 检 索 a p p l e , 如 果 存 在 返 回 键 名 a r r a y k e y e x i s t s ( " a p p l e " , arr);在数组中检索apple ,如果存在返回键名 array_key_exists("apple", arr);applearraykeyexists("apple",arr);检索给定的键名是否存在数组中
isset( a r r [ a p p l e ] ) : 检 索 给 定 的 键 名 是 否 存 在 数 组 中 a r r a y c h u n k ( arr[apple]):检索给定的键名是否存在数组中 array_chunk( arr[apple]):arraychunk(arr,3,TRUE);可以将一个数组分割成多个,TRUE为保留原数组的键名
array_shift( a r r ) ; 数 组 中 的 第 一 个 元 素 移 出 并 作 为 结 果 返 回 ( 数 组 长 度 减 1 , 其 他 元 素 向 前 移 动 一 位 , 数 字 键 名 改 为 从 零 技 术 , 文 字 键 名 不 变 ) a r r a y u n s h i f t ( arr);数组中的第一个元素移出并作为结果返回(数组长度减1,其他元素向前移动一位,数字键名改为从零技术,文字键名不变) array_unshift( arr);1arrayunshift(arr,“a”,array(1,2));在数组的开头插入一个或多个元素

2.说10个字符串函数
strlen( s t r ) ; / / 返 回 字 符 串 长 度 m b s t r l e n ( str);//返回字符串长度 mb_strlen( str);//mbstrlen(str) 可以返回中文字符长度;
strtolower( s t r ) ; / / 字 母 转 小 写 s t r t o u p p e r ( str);//字母转小写 strtoupper( str);//strtoupper(str);//字母转大写
str_replace(‘a’,‘b’, s t r ) ; / / b 替 换 str);//b替换 str);//bstr 中的a 区分大小写 ;
trim( s t r ) ; / / 删 除 字 符 串 前 后 ( 左 右 ) 空 格 s t r p o s ( str);//删除字符串前后(左右)空格 strpos( str);//strpos(str,'a’);//字符串a 在 s t r 第 一 次 出 现 的 位 置 索 引 0 开 始 没 有 出 现 返 回 f a l s e 区 分 大 小 写 s u b s t r ( str 第一次出现的位置 索引0开始 没有出现返回false 区分大小写 substr( str0falsesubstr(str,0,3);//截取字符串 s t r 的 第 一 个 字 符 截 取 长 度 3 长 度 不 填 默 认 截 取 到 最 后 参 数 为 负 数 则 倒 数 s t r s t r ( str 的第一个字符 截取长度3 长度不填默认截取到最后 参数为负数则倒数 strstr( str3strstr(str,‘a’);//截取字符串 s t r 中 的 第 一 个 字 符 ′ a ′ 后 的 字 符 串 如 s a b c − > a b c s t r r e v ( str 中的第一个字符'a'后的字符串 如 sabc -> abc strrev( strasabc>abcstrrev(str);//字符串反转 abcd->dcba

3.说5个常用的魔术方法
(1)__construct()构造方法
执行时机:在使用 new关键字使用类实例化一个对象时自动执行
功能作用:通常用于对对象的属性进行初始化
(2)__destruct()析构方法
执行时机:在对象被销毁(unset或PHP执行结束)时自动执行
功能作用:通常用于释放对象占用的第三方资源(如:数据库)
(3)__toString()转换字符串
执行时机:在对象被当成字符串使用时自动执行
功能作用:兼容对象的字符串调用形式,根据用户需求显示出对象的字符串形态
(4)__invoke()函数调用方法
执行时机:在对象被当成函数使用时自动执行
功能作用:兼容对象的函数调用形式,允许用户像使用函数一样使用对象
(5)__clone()克隆方法
执行时机:在克隆(clone)对象时自动执行
功能作用:在克隆对象时可以同时执行一些其它操作,甚至可以阻止对象被克隆

4.常见的HTTP状态码:
200 - 请求成功
301 - 资源(网页等)被永久转义到其他URL
404 - 请求的资源(网页等)不存在
505 - 内部服务器错误

5.如何获取客户端的ip(要求取得一个int)和服务器ip的代码
客户端:$_SERVER[“REMOTE_ADDR”];或者getenv(‘REMOTE_ADDR’)
ip2long进行转换
服务器端:gethostbyname(‘www.baidu.com’)

6.使用那些工具进行版本控制
cvs、svn、vss、git

7.html行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
行内元素:a span img input select
块级元素:div ul ol li dl dt dd h1 p
空元素:


8.cookies,sessionStorage和localStorage的区别?
共同点:都是保存在浏览器端,且是同源的。
区别:
(1)cookies是为了标识用户身份而存储在用户本地终端上的数据,始终在同源http请求中携带,即cookies在浏览器和服务器间来回传递,而sessionstorage和localstorage不会自动把数据发给服务器,仅在本地保存。
(2)存储大小的限制不同。cookie保存的数据很小,不能超过4k,而sessionstorage和localstorage保存的数据大,可达到5M。
(3)数据的有效期不同。cookie在设置的cookie过期时间之前一直有效,即使窗口或者浏览器关闭。sessionstorage仅在浏览器窗口关闭之前有效。localstorage始终有效,窗口和浏览器关闭也一直保存,用作长久数据保存。
(4)作用域不同。cookie在所有的同源窗口都是共享;sessionstorage不在不同的浏览器共享,即使同一页面;localstorage在所有同源窗口都是共享

9.如何防止表单重复提交
1、当用户点击提交按钮后,禁用提交按钮;
2、在数据库中加唯一索引约束保证数据的唯一(适合某些特定场景);
3.、存在 redis 缓存中 当用户提交上来之后,将数据进行排序,md5加密,值,设置一个时间,判断redis是否有数据。
4、生成token放进session,当用户第一次请求进来之后,把对应的session删除,如果判断这个session,代表重复提交。
5、把参数排序,md5加密,放到cache中,判断如果cache中存在,代表重复提交。

10.tcp和udp的区别?
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

11.缓存的应用场景
减少了对数据库的读操作,数据库的压力降低
加快了响应速度
内存容量相对硬盘小

12.jsonp原理
介绍::跨域问题是由于浏览器为了防止CSRF攻击,避免恶意攻击而带来的风险而采取的同源策略限制。当一个页面中使用
XMLHTTPRequest对象发送HTTP请求时(XHR请求),必须保证当前页面和请求的对象是同源
的,即协议、域名和端口号要完全一致,否则浏览器就会阻止此跨域请求返回的数据。
浏览器只对XHR(XMLHttpRequest)请求有同源请求限制,而对script标签src属性、link标签ref属性和img标签src属
性没有这这种限制,利用这个“漏洞”就可以很好的解决跨域请求。JSONP就是利用了script标签无同源限
制的特点来实现的,当向第三方站点请求时,我们可以将此请求放在

13.http与https的区别
https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

14.redis 持久化
rdb RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,
AOF 持久化以日志的形式记录服务器所处理的每一个写、删除操作

15.XHTML和HTML有什么区别
· HTML是一种基本的WEB网页设计语言,XHTML是一个基于XMl的置标语言
· 最主要的不同
· XHTML元素必须被正确地嵌套。
· XHTML元素必须被关闭
· 标签名必须用小写字母
· XHTMl文档必须拥有根元素

16.行内元素和块状元素的区别?
· 行内元素:会在水平方向排列,不能包含快级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效
· 块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行

17.选择器优先级是怎样的?
1、!important>行内样式>id选择器>类选择器>标签选择器>通配符>继承
2、权重算法:(0,0,0,0)==》第一个0对应的是important的个数,第二个0对应的是id选择器的个数,第三个0对应的类选择器的个数,第四个0对应的是标签选择器的个数,就是当前选择器的权重
3、比较:先从第一个0开始比较,如果第一个0大,那么说明这个选择器的权重高,如果第一个相同,比较第二个,依次类推。

18.px、em、rem的区别?
· 1、px像素。绝对单位,像素px是相对于显示器屏幕分辨率而言的,是一个虚拟单位。是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI。
· 2、em是相对长度单位,相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对浏览器的默认字体尺寸。它会继承父级元素的字体大小,因此并不是一个固定的值。
· rem是CSS3新增的一个相对单位(root em,根em),使用rem为元素设定字体大小事,仍然是相对大小但相对的只是HTML根元素。
· 4、区别:IE无法调用那些使用px作为单位的字体大小,而em和rem可以缩放,rem相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器已支持rem。

19.在新窗口打开链接的方法是?
target:_blank

20.网页验证码是干嘛的,是为了解决什么安全问题?

  1. 区分用户是计算机还是人的程序;
  2. 可以防止恶意破解密码、刷票、论坛灌水;

21.元素的alt和title有什么异同?
在alt和title同时设置的时候,alt作为图片的替代文字出现,title是图片的解释文字。

22.redis的数据类型
字符串(String) ,哈希(hash),集合(set),有序集合(zset), 列表(list)

你可能感兴趣的:(面试题,php基础面试题)