1. echo count("abc"); 输出什么?
答案是1
2. 用PHP写出显示客户端IP与服务器IP的代码
获取客户端IP:
A、
<?
$iipp=$_SERVER["REMOTE_ADDR"];
echo $iipp;
?>
B、
<?
//php获取ip的算法
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
$ip = getenv("REMOTE_ADDR");
}
else
{
$ip = "Unknown";
}
echo "你的IP:".$ip ;
获取服务器端IP
/**
* Get Client/Server IP
*
* @author Yaron (http://yaron.org.cn)
* @version 0.1
* @package
*/
class getIP{
function clientIP(){
$cIP = getenv('REMOTE_ADDR');
$cIP1 = getenv('HTTP_X_FORWARDED_FOR');
$cIP2 = getenv('HTTP_CLIENT_IP');
$cIP1 ? $cIP = $cIP1 : null;
$cIP2 ? $cIP = $cIP2 : null;
return $cIP;
}
function serverIP(){
return gethostbyname($_SERVER_NAME);
}
}
$getIP = new getIP();
$clientIp = getIP::clientIP();
$serverIp = getIP::serverIP();
echo 'Client IP is ',$clientIp,'<br />';
echo 'Server IP is ',$serverIp,'<br />';
3. error_reporting(2047)什么作用?
可以参考http://agileblog.cn/error-reporting-2047/
4. echo,print()和print_r()有什么区别?
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
echo -- 输出一个或者多个字符串
5. 打开php.ini中的Safe_mode,会影响哪些参数?至少说出6个。
system,passthru,exec,shell_exec,popen,phpinfo等等大部分的文件操作函数。
因为Safe_mode是php非常重要的内嵌的安全机制。默认是关闭的。
6. 写个函数来解决多线程同时读写一个文件的问题。
思路:首先生成一个锁文件,读写时判断时否存在, 存在则返回假值, 不存在执行程序, 并生成一个锁文件, 程序结束删除此锁文件。
7. 请写一个函数验证电子邮件的格式是否正确(要求使用正则)
非正则的代码
<?php
function validateEmail($email){//判断Email地址是否合法的函数
$hasAtSymbol=strpos($email,"@");//判断是否存在@
$hasDot=strpos($email,".");//判断是否存在点号
if($hasAtSymbol and $hasDot)// 如果包含@和点号,则返回true
return true;
else //否则返回false
return false;
}
echo validateEmail("domain@freezingsun.com");//调用验证函数
?>
8. 考SQL语句的题,题太长了,实在不好回忆了。
9. MySQL数据库,一天一万条以上的增量,怎么优化?
做数据库负载即可。或者做数据仓库。
多台数据库服务器,设置一台为主数据库服务器,其他的为从数据库服务器。
也可参考:Query Cache 原理http://agileblog.cn/Query-Cache-Principle/
10. 写出一种排序算法(要写出代码),并说出优化它的方法。
以下是三种常见的排序算法,这些代码的话,无须优化了。可以说是一个标准的排序算法了。
<?
//插入排序(一维数组)
function insert_sort($arr){
$count = count($arr);
for($i=1; $i<$count; $i++){
$tmp = $arr[$i];
$j = $i - 1;
while($arr[$j] > $tmp){
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
$j--;
}
}
return $arr;
}
//选择排序(一维数组)
function select_sort($arr){
$count = count($arr);
for($i=0; $i<$count; $i++){
$k = $i;
for($j=$i+1; $j<$count; $j++){
if ($arr[$k] > $arr[$j])
$k = $j;
if ($k != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
//冒泡排序(一维数组)
function bubble_sort($array){
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j--){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
//快速排序(一维数组)
function quick_sort($array){
if (count($array) <= 1) return $array;
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i=1; $i<count($array); $i++){
if ($array[$i] <= $key)
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}
$left_arr = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
?>
11. 写个函数用来对二维数组排序。
public class TestSort {
public static void main(String[] args) {
int[][] a={
{1,1,2,4,2},
{1,79,21,65},
{111,23,6,2},
{98,98,2,100}
};
int result=0;
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
for(int k=j;k<a[i].length;k++)
{
int temp;
if(a[i][j]>a[i][k])
{
temp=a[i][j];
a[i][j]=a[i][k];
a[i][k]=temp;
}
result++;
}
}
}
System.out.println("result="+result);
for(int m=0;m<a.length;m++)
{
for(int n=0;n<a[m].length;n++)
{
System.out.print(a[m][n]+", ");
}
System.out.println();
}
}
}
12. 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
1. substr($sPath, -3)
2. $arPath = explode("/", $sPath); $arPath[ count($arPath)-1 ]
3. $arPath = explode(".", $sPath); $arPath[ 1 ]
4. $arPath = pathinfo( $sPath ); $arPath["extension"]
5. preg_match("/.(\w+)$/", $sPath, $arPath); $arPath[1]
13. 一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
<?php
/**
* 猴子选大王
*
* @param int $m 猴子数
* @param int $n 出局数
* @return array
*
*/
function king($m ,$n)
{
//构造数组
for($i=1 ;$i<$m+1 ;$i++){
$arr[] = $i ;
}
$i = 0 ; //设置数组指针
while(count($arr)>1)
{
//遍历数组,判断当前猴子是否为出局序号,如果是则出局,否则放到数组最后
if(($i+1)%$n ==0) {
unset($arr[$i]) ;
} else {
array_push($arr ,$arr[$i]) ; //本轮非出局猴子放数组尾部
unset($arr[$i]) ; //删除
}
$i++ ;
}
return $arr ;
}
var_dump(king(6,4));
最后编辑: admin 编辑于2010/08/01 10:54
答案是1
2. 用PHP写出显示客户端IP与服务器IP的代码
获取客户端IP:
A、
<?
$iipp=$_SERVER["REMOTE_ADDR"];
echo $iipp;
?>
B、
<?
//php获取ip的算法
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
$ip = getenv("REMOTE_ADDR");
}
else
{
$ip = "Unknown";
}
echo "你的IP:".$ip ;
获取服务器端IP
/**
* Get Client/Server IP
*
* @author Yaron (http://yaron.org.cn)
* @version 0.1
* @package
*/
class getIP{
function clientIP(){
$cIP = getenv('REMOTE_ADDR');
$cIP1 = getenv('HTTP_X_FORWARDED_FOR');
$cIP2 = getenv('HTTP_CLIENT_IP');
$cIP1 ? $cIP = $cIP1 : null;
$cIP2 ? $cIP = $cIP2 : null;
return $cIP;
}
function serverIP(){
return gethostbyname($_SERVER_NAME);
}
}
$getIP = new getIP();
$clientIp = getIP::clientIP();
$serverIp = getIP::serverIP();
echo 'Client IP is ',$clientIp,'<br />';
echo 'Server IP is ',$serverIp,'<br />';
3. error_reporting(2047)什么作用?
可以参考http://agileblog.cn/error-reporting-2047/
4. echo,print()和print_r()有什么区别?
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
echo -- 输出一个或者多个字符串
5. 打开php.ini中的Safe_mode,会影响哪些参数?至少说出6个。
system,passthru,exec,shell_exec,popen,phpinfo等等大部分的文件操作函数。
因为Safe_mode是php非常重要的内嵌的安全机制。默认是关闭的。
6. 写个函数来解决多线程同时读写一个文件的问题。
思路:首先生成一个锁文件,读写时判断时否存在, 存在则返回假值, 不存在执行程序, 并生成一个锁文件, 程序结束删除此锁文件。
7. 请写一个函数验证电子邮件的格式是否正确(要求使用正则)
<?php
function validateEmail($email){//使用正则表达式判断Email地址是否合法的函数
return ereg("^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$",$email);
}
echo validateEmail("myname@isstudy.com");//调用验证函数
?>
function validateEmail($email){//使用正则表达式判断Email地址是否合法的函数
return ereg("^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$",$email);
}
echo validateEmail("myname@isstudy.com");//调用验证函数
?>
非正则的代码
<?php
function validateEmail($email){//判断Email地址是否合法的函数
$hasAtSymbol=strpos($email,"@");//判断是否存在@
$hasDot=strpos($email,".");//判断是否存在点号
if($hasAtSymbol and $hasDot)// 如果包含@和点号,则返回true
return true;
else //否则返回false
return false;
}
echo validateEmail("domain@freezingsun.com");//调用验证函数
?>
8. 考SQL语句的题,题太长了,实在不好回忆了。
9. MySQL数据库,一天一万条以上的增量,怎么优化?
做数据库负载即可。或者做数据仓库。
多台数据库服务器,设置一台为主数据库服务器,其他的为从数据库服务器。
也可参考:Query Cache 原理http://agileblog.cn/Query-Cache-Principle/
10. 写出一种排序算法(要写出代码),并说出优化它的方法。
以下是三种常见的排序算法,这些代码的话,无须优化了。可以说是一个标准的排序算法了。
<?
//插入排序(一维数组)
function insert_sort($arr){
$count = count($arr);
for($i=1; $i<$count; $i++){
$tmp = $arr[$i];
$j = $i - 1;
while($arr[$j] > $tmp){
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
$j--;
}
}
return $arr;
}
//选择排序(一维数组)
function select_sort($arr){
$count = count($arr);
for($i=0; $i<$count; $i++){
$k = $i;
for($j=$i+1; $j<$count; $j++){
if ($arr[$k] > $arr[$j])
$k = $j;
if ($k != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
//冒泡排序(一维数组)
function bubble_sort($array){
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j--){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
//快速排序(一维数组)
function quick_sort($array){
if (count($array) <= 1) return $array;
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i=1; $i<count($array); $i++){
if ($array[$i] <= $key)
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}
$left_arr = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
?>
11. 写个函数用来对二维数组排序。
public class TestSort {
public static void main(String[] args) {
int[][] a={
{1,1,2,4,2},
{1,79,21,65},
{111,23,6,2},
{98,98,2,100}
};
int result=0;
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
for(int k=j;k<a[i].length;k++)
{
int temp;
if(a[i][j]>a[i][k])
{
temp=a[i][j];
a[i][j]=a[i][k];
a[i][k]=temp;
}
result++;
}
}
}
System.out.println("result="+result);
for(int m=0;m<a.length;m++)
{
for(int n=0;n<a[m].length;n++)
{
System.out.print(a[m][n]+", ");
}
System.out.println();
}
}
}
12. 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
1. substr($sPath, -3)
2. $arPath = explode("/", $sPath); $arPath[ count($arPath)-1 ]
3. $arPath = explode(".", $sPath); $arPath[ 1 ]
4. $arPath = pathinfo( $sPath ); $arPath["extension"]
5. preg_match("/.(\w+)$/", $sPath, $arPath); $arPath[1]
13. 一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
<?php
/**
* 猴子选大王
*
* @param int $m 猴子数
* @param int $n 出局数
* @return array
*
*/
function king($m ,$n)
{
//构造数组
for($i=1 ;$i<$m+1 ;$i++){
$arr[] = $i ;
}
$i = 0 ; //设置数组指针
while(count($arr)>1)
{
//遍历数组,判断当前猴子是否为出局序号,如果是则出局,否则放到数组最后
if(($i+1)%$n ==0) {
unset($arr[$i]) ;
} else {
array_push($arr ,$arr[$i]) ; //本轮非出局猴子放数组尾部
unset($arr[$i]) ; //删除
}
$i++ ;
}
return $arr ;
}
var_dump(king(6,4));
最后编辑: admin 编辑于2010/08/01 10:54


error_reporting(2047)什么作用
PHP中正则表达式使用详解(转)
