1. 抓取远程图片到本地,你会用什么函数?
fsockopen();
~~~
//获取远程图片的大小
$fp = fsockopen("www.baidu.com", 80, $errno, $errstr, 30);
if ($fp) {
//这里请求设置为HEAD就行了
$out = "HEAD /img/baidu_sylogo1.gif HTTP/1.1\r\n";
$out .= "Host: www.baidu.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$header = fgets($fp);
if (stripos($header, 'Content-Length') !== false) {
$size = trim(substr($header, strpos($header, ':') + 1));
echo 'ddd'.$size;
}
}
fclose($fp);
} else {
echo "jkj.$errstr ($errno)";
}
~~~
没找到使用fsockopen函数到本地的具体代码,有他的一些类似用法
* * * * *
2.简述pOST 和GET传输的最大容量分别是多少?
2MB,1024B
* * * * *
3.用最少的代码写一个求3值最大值的函数.
~~~
function lar($a,$b,$c){
return $a>$b? ($a>$c? $a : $c) : ($b>$c? $b : $c );
}
~~~
* * * * *
4.求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
~~~
//先转为时间戳
$begin=strtotime(‘2007-2-5′);
$end=strtotime(‘2007-3-6′);
echo ($end-$begin)/(24*3600);
~~~
* * * * *
5.请写一个函数,实现以下功能:
字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。
~~~
function str_change($str) {
//将_替换成空格
$str = str_replace ( “_”, " ", $str );
$str = ucwords ( $str );
//将空格换成空
$str = str_replace ( " ", “”, $str );
return $str;
}
~~~
6.要求写一段程序,实现以下数组$arr1转换成数组$arr2:
$arr1 = array (
‘0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ),
‘1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ),
‘2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ),
‘3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ),
‘4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ )
);
$arr2 = array (
‘0′ => array (
‘0′ => array ( ‘tid’ => 1, ‘name’ => ‘Name1′),
‘1′ => array ( ‘tid’ => 2, ‘name’ => ‘Name2′),
‘2′ => array ( ‘tid’ => 5, ‘name’ => ‘Name3′),
‘3′ => array ( ‘tid’ => 7, ‘name’ => ‘Name4′) ),
‘1′ => array (
‘0′ => array ( ‘tid’ => 9, ‘name’ => ‘Name5′ ) ) );
~~~
//将tid相同的元素归一个数组
$arr1 = array (
'0' => array ('fid' => 1, 'tid' => 1, 'name' =>'Name1' ),
'1' => array ('fid' => 1, 'tid' => 2 , 'name' =>'Name2' ),
'2' => array ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),
'3' => array ('fid' => 1, 'tid' => 7 , 'name' =>'Name4' ),
'4' => array ('fid' => 3, 'tid' => 9, 'name' =>'Name5' )
);
function changeArrayStyle($arr){
foreach($arr as $key=>$value){
$result[$value[fid]][]=$value;
}
return array_values($result);
}
$arr2=changeArrayStyle($arr1);
echo "<pre>";
var_dump($arr2);
~~~
* * * * *
7.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。(目录操作)
~~~
//echo __file__."<br>";
//echo dirname(__file__)."<br>";
$d = dir(dirname(__file__));
//var_dump($d) ;
//echo "<br>Handle: " . $d->handle . "\\n";
//echo "<br>path: " . $d->path . "\\n";
$entry = $d->read ();
//echo "<br>";
//var_dump($entry);
while ( false !== ($entry = $d->read ()) ) {
echo "<br>".$entry . "<br />";
}
$d->close ();
~~~
* * * * *
8.两张表 city表和province表。分别为城市与省份的关系表。
city:
id City provinceid
1 广州 1
2 深圳 1
3 惠州 1
4 长沙 2
5 武汉 3
………. 广州
province:
id province
1 广东
2 湖南
3 湖北
……….
(1) 写一条sql语句关系两个表,实现:显示城市的基本信息。?
select A.id,A.Cityname,B.province from city A,province B where A.provinceid=B.id
(2)如果要统计每个省份有多少个城市,请用group by 查询出来。?
显示字段:省份id ,省份名,包含多少个城市。
.select B.id,B.province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id
* * * * *
9.请简述操作系统的线程与进程的区别
参考链接:http://mp.weixin.qq.com/s/hIawygtVQII9Q7Jo-M9eBg
一个进程可以包括多个线程;
一个进程的内存空间是共享的,每个线程都可以使用这些共享内存;
一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存;
操作系统的设计,因此可以归结为三点:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
* * * * *
10.请使用伪语言结合数据结构冒泡排序法对以下一组数据进行排序 10 2 36 14 10 25 23 85 99 45。
~~~
$a = array(10,2,36,14,10,25,23,85,99,45);
for($j=0 ; $j<9 ; $j++)
for($i=0 ; $i<9-$j ; $i++)
if($a[$i] > $a[$i+1]) {
$t = $a[$i] ;
$a[$i] = $a[$i+1] ;
$a[$i+1] = $t ;
}
echo var_dump($a);
~~~
* * * * *
11.COOKIE、SESSION的联系和区别,多台web服务器如何共享SESSION,禁用COOKIE后SESSION是否可用,为什么?
可以参考:http://blog.hlnet.com.cn/forum.php?mod=viewthread&tid=73
答:session的运行机制:
用户A访问站点Y,如果站点Y指定了session_start();(以下假设session_start()总是存在)那么会产生一个session_id,这个session_id一般会以COOKIE的形式保存到用户A(我们可以通过在php.ini里设置session.use_only_cookies为1,强制SESSIONID必须以COOKIE专递。)。这时候SESSIONID表现为$_COOKIE[‘PHPSESSID’];(PHPSESSID可用session_name()函数来下修改)
用户A接着访问,这个session id($_COOKID[‘PHPSESSID’])就会在A每次访问Y的时候传送到站点Y。
在站点Y上,会有这么一个目录,是用来保存SESSION的实际数据的。站点Y接收到sessionid,然后通过session id,来获得与SESSION数据的关联,并返回SESSION数据。
答:session与cookie的区别:
SESSION存储在服务器端,用户无法进行修改,相对比较安全,COOKIE存储在客户端,用户通过手段可以进行修改,相对不安全。
Session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器资源。
单个cookie在客户端的限制是3k,就是说一个站点在客户端存放的COOKIE不能超过3k。
答:多台服务器如何共享SESSION:
共享就是每台服务器公用一个,那显然要把这个session专门放到一个地方
比如存数据库,每台服务器都调这个数据库里的session
存memcache 一样的原理
答:可以,但是需要在传值的时候将Session_id写到URL中;因为禁用以后再传递参数的时候会以网址的形式参数接到后面传过去!
* * * * *
12.HTTp协议中的pOST和GET有何区别?
| 操作方式 | 数据位置 | 明文密文 | 数据安全 | 长度限制 | 应用场景 |
| --- | --- | --- | --- | --- | --- |
| GET | HTTP包头 | 明文 | 不安全 | 长度较小 | 查询数据 |
|POST | HTTP正文 | 可明可密 | 安全 | 支持较大数据传输 | 修改数据 |
* * * * *
13.一段php代码,写出输出结果:
~~~
$a=0;
$b=0;
if(($a=3)>0||($b=3)>0){
$a++;
$b++;
echo $a ;
echo $b; //输出b的值 ($a=4 ,$b=1) $b=3没有执行
}
~~~
* * * * *
14.reqiure的include都可包含文件,二者的区别何在?require/include 与 require_once/include_once区别何在?
当包含的文件不存在时,
include:代码继续往下执行,报一个warning,
而require则是报fatal error, 停止执行.
*_once只包含一次,即便多次调用.
而不加once,则调用一次,包含一次.
关于效率:
加once需要检测已加载的文件,效率稍低,
如果能确认不会多次包含,不必加once
'