PHP初级程序员能力测试部分参考答案2_php程序员测试题答案

其他范文 时间:2020-02-28 06:50:07 收藏本文下载本文
【www.daodoc.com - 其他范文】

PHP初级程序员能力测试部分参考答案2由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“php程序员测试题答案”。

PHP初级程序员能力测试参考答案[闭卷]

注:①本测试满分100分,80分及格,形式为闭卷,不得翻阅任何手册和参考书籍。本试卷使用的PHP版本为5.2.6+,WEB服务器使用APACHE2+,开发平台为WINDOWS xp+

②本测试时间为3小时,若题后标明不限语言平台,则你可以使用PHP,C/C++,JAVA等任意一门语言完成。

③出题人:陈小白。

1.已知三点A,B,C的坐标为A(20,20),B(15,40),C(50,30),三点构成一个三角形,求判断点D(30,18)是否在此三角形内。【本题主要考察基本算法,解答不限语言平台 5分】

连接AD,BD,CD,可以计算ABD+ACD+BCD的面积,如果三者之和等于ABC,那么点D在三角形内。海伦公式可以求三角形面积。S=SQRT(p*(p-a)*(p-b)*(p-c));p=1/2(a+b+c)也可以用向量叉积的办法来判断。也就是余弦公式的变形

ad×ab

代表矢量ad与ab的叉积,其坐标表达式为

ad×ab =(xd-xa)*(yb-ya)-(yd-ya)*(xb-xa)

于是判别过程如下:若三个叉积大于等于0,则则可判定d在△abc内(上)。原理是点在三角行内,必在每条边的同一侧

2.求1~50万以内的素数。【本题主要考察基本算法,解答不限语言平台 5分】

要点:首先从3开始,偶数一定不是素数,所以循环条件是i+2,而不是我们习惯了的i++

一旦能被从2~N/2间的任何一个数整除,则一定不是素数,跳出

还可以再加上一个筛子,把3,5,7,11,13,17,19的倍数踢出。

另外还有许多技巧,主要是减少循环次数,固定循环次数等方式。筛法求素数:

if($all[$i] == 0){

//echo $i,“n”;

for($j = $i;$j

$all[$j] = 1;

}

} } echo microtime(TRUE)-$t1;PHP生成的话,应控制在0.8秒内。C的话应该在20MS以内。(普通PC机 1G 内存,1.8GHZ)附加题:用PHP求出1亿以内的素数并保存在文件中;求出100亿以内的素数的大概个数。【+4分】 第一问需要用到glob函数以及JS定时刷新来完成,第二问的答案是434294481,涉及数论和密码学的知识。

//定义10亿,目前测试1000万

PHP初级程序员测试

$j=$i+4;

$sqrt = sqrt($j);

foreach($array as $value){

if($j%$value===0){

break;

}

if($value>$sqrt){

//写入串

$s.= $j.PHP_EOL;

break;

}

}

}

//将串写入文件

fwrite($fp,$s);}

fclose($fp);echo microtime(true)-$time;?> lim π(x)/(x/Ln x)=1

3.请问$_GET,$_POST,$_REQUEST变量的作用是什么?区别是什么?【考察点:php 的变量机制 本小步骤:3分】

$_GET,$_POST都用于从表单中取值,$_GET取到的值会显示在浏览器中,而$_POST不会,并且$_GET取值有大小限制(2K),所以同等要求下优先使用$_POST。$_REQUEST=$_GET+$_POST+$_COOKIE

已知现在有一个表单定义如下:

那么$_GET['na.me']和$_POST['na.me']的值是什么?为什么?【本小步骤:2分】

:得不到任何值。因为点是非法字符,将会自动转换为下划线。可用$_POST['na_me']访问。

然而某衰哥在某次测试中总是打印不出POST过来的值,问题可能出在什么地方?【本小步骤:1分】 :可能是PHP.INI文件里variables_order选项屏蔽了P

为了解决上面涉及的部分问题,我们需要了解PHP的变量机制。

在每个请求到来以后,apache处理到response阶段的时候,会将控制权交给PHP模块,PHP模块会在处理请求之前首先间接调用php_request_startup(具体调用序列是

send_php-> apache_php_module_main-> php_request_startup).通过这位衰哥的分析,在php_request_startup中,找到了初始化请求相关的变量的函数。其部分代码如下:

PHPAPI void php_register_variable_ex(char *var, zval *val, zval *track_vars_array TSRMLS_DC){

char *p = NULL;

PHP初级程序员测试

$sa = new sample();foreach($sa as $key => $val){ print $key.“=>”.$val;} ?> 或者直接把对象转为数组

5.PHP语言细节【考察点:PHP基础语法知识和杂类】(1)有下面一段不够优雅的代码,也许还存在BUG:

:register_shutdown_function — Register a function for execution on shutdown。利用这个函数可以模拟PHP5中的虚构函数。

函数原型如下:void register_shutdown_function(callback $function [, mixed $parameter [, mixed $...]])

(3)include()和require()函数有什么区别?可以在一个文件里多次include同一个文件吗?【2分】

: 这两种结构除了在如何处理失败之外完全一样。include()产生一个警告而 require()则导致一个致命错误。可以在一个文件里多次include同一个文件,但是会造成变量和函数重复定义的错误,后者是一个致命错误。

(4)在C语言的循环判断条件中,为了实现计数器的累加,可以有三种形式,也就是:i++,++i,i+=1.试给这三种形式计数器的速度快慢排序并解释。【假设编译器不进行自动优化 3分】

1.++i要比i++快一些 因为i++要在stack里面保存自增之前的i值 而++i可以不用

2.i++比i+=1要快。++ 就是一个inc命令,如果编译器不优化的话,+=1 就是 add eax,1(5)已知一个MYSQL数据库中有100万条用户资料数据,现在需要随机取出10条不重复的记录,应该如何做最快最简单?【4分】

:答案一:用程序来产生10个随机数,这10个随机数可以用在Limit中定位, 生成10条SQL 如果ID是连续(没有删除)的话, 也可以生成一条SQL, 里面有10个OR ID=随机数(4分)

答案二:SELECT * FROM __TABLE__ AS t1 JOIN(SELECT ROUND(RAND()*((SELECT MAX(id)FROM __TABLE__)-(SELECT MIN(id)FROM __TABLE__))+(SELECT MIN(id)FROM __TABLE__))AS id)AS t2

PHP初级程序员测试

(11)写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pa,email)【2分】

答案略。

6.WEB页面相关技术。【考察点:HTML,CSS,JS的基础知识】(1)利用CSS技术实现横向菜单。【兼容性要求:IE6+,FIREFOX 3+。3分】 效果图如下:

: 首页产品介绍 服务介绍技术支持 联系我们

下载PHP初级程序员能力测试部分参考答案2word格式文档
下载PHP初级程序员能力测试部分参考答案2.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文