最新消息:

PHP面试题—第四回

PHP huayuguoji 85浏览 0评论

一、echo (int)((0.1+0.7)*10);写出上述语句的输出结果?

<?php

echo (int)((0.1+0.7)*10);

//输出结果为7

二、ajax跨域实现方法

1、跨子域实现ajax

要求:实现coolkissbh.com的页面 异步请求 blog.coolkissbh.com下的页面

实现方法:借助iframe,通过设置iframe的src属性,嵌入blog.coolkissbh.com下的一个页面,比如AjaxProxy.aspx,然后由该页面去请求Ajax

AjaxProxy请求完毕后,通过parent对象把返回的数据回传给coolkissbh.com的主页面。因此,真正的异步请求还是发生

在blog.coolkissbh.com的域名下

注意:通过这种方法实现的跨子域ajax请求,需要在coolkissbh.com的请求页面以及AjaxProxy.aspx页面中设置同样的域名,也就是

document.domain = “coolkissbh.com”;

注意:关于设置domain的问题,如果是跨全域,使用上面方法时候,firefox下会提示

Illegal document.domain value” code: “1009的错误,因此跨全域只能使用第二种方法

处理返回的数据:

AjaxProxy.aspx将ajax返回的数据保存到一个全局变量中,coolkissbh.com通过setInterval定时去判断iframe的页面是否加载完成。如果加载完成,则获取AjaxProxy.aspx的全局变量值。然后再做其它处理。

这里有个问题:我原来是打算在AjaxProxy.aspx的ajax请求完成后,调用parent的方法,同时将数据返回,但是在IE下,点击第一次时候就会出现“permission denied”的错误,再次点击就正常了。在firefox下就没有问题,不知道是什么原因。

2,跨全域实现ajax

要求:实现coolkissbh.com的页面异步请求coolkiss.com下的页面

实现方法:上面提到跨全域不能通过设置domain方法来实现。但是可以使用script标签来实现,通过设置script标签的src属性为coolkiss.com域名

下的一个页面,同时将callback函数传到该页面中,例如:

RequestAjax_CrossSite = function() {

var obj = $(“#crossSitePage”);

obj.attr(“src”, “http://coolkiss.com/CrossSite.aspx?callback=handleData3”);

}

handleData3 = function(data) {

$(“#ResponseData”).html(data);

}

CrossSite.aspx返回一个字符串,将返回的数据回传给callback,执行回调函数,实现ajax,例如:

Response.Clear();

Response.Write(string.Format(“{0}(‘{1}’)”, Request[“callback”], responseData));

Response.End();

注意:这种方法同样可以用于处理跨子域ajax的问题,但是就无法像jquery那样获取ajax调用的各个状态

3,通过jquery的jsonp实现跨域ajax,其实原理跟第二种方法是一样的,支持跨全域和子域

jquery 1.2 后添加了对跨域ajax的调用,也就是$.getJSON 函数

调用方法如下:

下面是coolkissbh.com下的页面

//使用jsonp实现跨全域

RequestAjax_JSONP = function() {

var obj = $(“#crossSitePage”);

$.getJSON(“http://coolkiss.com/CrossSite.aspx?callback=?&t=” + Math.random(), function(data) {

//alert(data);

$(“#ResponseData”).html(data.content);

});

}

coolkiss.com后台处理代码,将一个json对象传递给callback:

public partial class CrossSite : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

LoadData_JSONP();

}

}

protected void LoadData_JSONP()

{

string responseData = “{content:/”hello world from coolkiss.com/”}”;

if (Request[“callback”] != null && !string.IsNullOrEmpty(Request[“callback”]))

{

Response.Clear();

Response.Write(string.Format(“{0}({1})”, Request[“callback”], responseData));

Response.End();

}

}

}

callback=? 其中?会自动替换为function(data)函数。

4、请解释.frm .myd .myi?

.frm .myd .myi都是Mysql存储数据的文件, 代表MySQL数据库表的结构/数据和索引文件

5.将GBK字符转换成utf-8编码,请写出转换函数(可多写);

做一个GBK To UTF-8

< ?phpheader(“content-Type: text/html; charset=Utf-8”); //设置字符的编码是utp-8echo mb_convert_encoding(“哈哈”, “UTF-8”, “GBK”);?>

6.请写出下面这段程序中echo语句输出的结果(不用考虑输出格式)

<?php

error_reporting(0);

$array=array();

echo count($array);

echo “<br>”;

$array=array(‘1′,’2’=>’3’);

echo count($array);

echo “<br>”;

$array=4;

echo count($array);

echo “<br>”;

unset($array);

echo count($array);

//代码输出结果:0210

7.请说出is_file()与file_exists()两函数的优缺点。

is_file 判断文件是否存在并且检查指定的文件名是否是正常的文件;

file_exists 判断文件是否存在或者是目录是否存在;

文件存在的情况下,is_file比file_exists要快N倍;

文件不存在的情况下,is_file比file_exists要慢;

所以:file_exits函数并不会因为该文件是否真的存在而影响速度,但是is_file影响就大了。

8.已知有一张地域信息表info,其中region(地域)、pop(人口)、area(面积)三个int型字段,请写出显示每个地区的总人口数和总面积,并且只显示总面积超过10000的地域的查询语句。

create database diyu character set gbk;

use diyu;

create table info(

id int auto_increment primary key,

region int ,

pop int,

area int

);

insert into info values(‘ ‘,1,7575725,12000);

insert into info values(‘ ‘,2,215232,2000);

insert into info values(‘ ‘,3,727352774,4000);

insert into info values(‘ ‘,4,72383,7000);

insert into info values(‘ ‘,5,72872378,12000);

insert into info values(‘ ‘,6,82879839,17000);

insert into info values(‘ ‘,7,47852727,15000);

insert into info values(‘ ‘,8,7278528,19000);

insert into info values(‘ ‘,9,278387528,13000);

insert into info values(‘ ‘,10,8527878,11000);

请写出显示每个地区的总人口数和总面积,

并且只显示总面积超过10000的地域的查询语句。

select region,pop,area from info where area>10000;

mysql> select region,pop,area from info where area>10000;

+——–+———–+——-+

| region | pop | area |

+——–+———–+——-+

| 1 | 7575725 | 12000 |

| 5 | 72872378 | 12000 |

| 6 | 82879839 | 17000 |

| 7 | 47852727 | 15000 |

| 8 | 7278528 | 19000 |

| 9 | 278387528 | 13000 |

| 10 | 8527878 | 11000 |

9.请简单描述一下nosql技术,和sql比有什么优势?

Sql特点: 1、SQL能够加强与数据的交互,并允许对单个数据库设计提出问题

2、SQL是标准化的

3、SQL能够扩展

4、SQL对数据呈现和存储采用正交形式

NoSQL特点: 1、NoSQL更适合大数据应用程序

2、NoSQL更适合大数据应用程序

3、NoSQL是可扩展性的关键

4、NoSQL是灵活性的关键

5、NoSQL是大数据应用程序的关键

10.$i和$j的值分别是多少?

<?php

$i = 1;

$j =1;

function student($j){

global $i;

$i = 2*$j;

$j =5;

}

student(2);

echo $i.'<br>’;

echo $j;

//代码输出结果为: 4 1

?>

转载请注明:PHP学习 » PHP面试题—第四回

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址