日期:2014-05-17  浏览次数:20541 次

大牛们好,php新手问几个面试题
PHP code

1.
$a = 3;
$b = 2;
echo (int)$a/(int)$b

为什么输出是 1.5?


2.
How can you hide the fact that web pages are written in PHP?
a. By using AddType application/X-httpd-php asp
b. Specify all file names without any dot and extension
c. By using .htaccess diretive in Apeche
d. All of the above

3.
解释一下Using Register Globals。







------解决方案--------------------
1. 因为1)/是除法操作符,不是整除操作符 2)(int)操作符优先级高于/
所以 (int)$a/(int)$b = 3 / 2 = 1.5

2. 我选择d

3. Using Register Globals的场合,提交的变量可以直接通过 $变量名 使用。
但是存在安全问题,建议不要用Register Globals.
------解决方案--------------------
(int)作用于变量,而非整个表达式
(int)($a/$b);如此结果是1


2 事实上这些措施还不够,最好能重编译apache,改写web服务器输出头,隐藏开发语言是php的信息

3 是已经非常不推荐的功能了
------解决方案--------------------
楼上二位
在 C 里 (int)a/(int)b 可是等于 1 的噢
这道题就源于这里
考点是数据类型的自动变换,两个整型数相除结果为什么是浮点数
------解决方案--------------------
探讨
楼上二位
在 C 里 (int)a/(int)b 可是等于 1 的噢
这道题就源于这里
考点是数据类型的自动变换,两个整型数相除结果为什么是浮点数

------解决方案--------------------
探讨

2 事实上这些措施还不够,最好能重编译apache,改写web服务器输出头,隐藏开发语言是php的信息


------解决方案--------------------
好像说到没啥意义的地方去了。或者说根本没必要这么去做


数据类型
根源还是在于php转换数据类型太容易了,hoho

强类型的语言,一般都会以a、b当中,精度更高的作为结果返回