PHP新浪乐居面试题,新浪乐居php开发工程师面试题

一、

1、有如下HTML:

1)用js取得________方法取得该对象;

2)用________属性取得属性title的属性值;

3)用________方法取得属性sina_title的属性值;

(1) document.getElementById('img1');

(2) document.getElementById('img1').getAttribute('title');

(3) document.getElementById('img1').getAttribute('sina_title');

2、php中对数组序列化和反序列化的函数分别是______和_______;

serialize,upserialize

3、rawurlencode和urlencode函数的区别是__________________;

rawurlencode会将空格转换为+,urlencode会把空格转换为%20

4、php中过滤HTML的函数是_______,转义的函数是____________;

strip_tags,htmlspecialchars

5、写出用正则把HTML中的js脚本过滤掉;

preg_replace('//is','',$htmlcode);

6、SQL中LEFT JOIN的含义是______________;

如果有一个表tl_user存储学生ID和名字name,另外一个表tl_score存储学生ID、科目subject和成绩score(有的学生没有考试成绩),写出sql语句打印出学生名字和各科总成绩;

左联接,首先将左表中所有数据取出,然后再将满足where条件中的右表数据取出来。当此行的数据并不满足where条件,则返回空.

select tu.name,sum(ts.score) as totalscore from tl.user left join tl_score on tl.uid = ts.uid;

7、写出三个调用系统命令的函数;

system,passthru,exec

8、josn处理数组的函数是;

json_encode,json_decode

9、php中判断变量是否被设置是函数是_______;判断是否为空的是___________;

isset,empty

10、error_reporting("E_ALL")和ini_set("display_errors", "on")的区别_________;

前者是设置错误显示等级,E_ALL代表提示全部错误(包括notice,warnning和error)。后者是设置让php显示错误,在关于错误显示控制中,后者的优先级最高。

11、PHP写出显示客户端IP的预定义变量________;提供来路url的是__________;

$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_REFERER']

12、php把utf-8转换成gbk的函数是___________;

iconv('UTF-8','GBK',$str);

13、php中分割字符串成数组的函数__________,连接数组成字符串的是_______;

explode,implode

14、php中类的静态方法怎么使用_____________________________________;

在类外部,使用:类名后面跟双冒号,再后面是方法名,类似classname::staticFucntion(),由于静态方法不属于某个对象,而是隶属于整个类,所以要用类名来调用它。

二、

1、如下错误:mysql server not go away,的原因是什么?

应该是mysql has gone away吧?

一般情况下是由于max_allowed_packet设置的值过小导致的,max_allowed_packet用来控制缓冲区的包大小,有时在导入数据的时候,此值过小就容易造成缓冲区容量不够。将my.ini或my.cnf中的此值设置大一些即可解决。

还有一种可能是连接数据库时使用了单例模式,多次操作数据库但都使用的是同一个连接,由于mysql处理每个线程也是队列模式,当前一个操作还没执行完毕 并且间隔小于wait_timeout所设置的值时就容易出现此问题,解决办法是将wait_timeout的值设置大一些。

2、mysql的静态表和动态表的区别,MyISAM和InnoDB的区别.

静态表是当一个表中没有采用varchar,blob,text这种可变长字段时,此表就是静态表,反之,如果一个表内存在至少一个可变长字段时,或者如果一个表被用ROW_FORMAT=DYNAMIC选项来创建,此表就为动态表。

myisam与innodb的区别在于,myisam不支持事务处理,因为其不用去做commit操作,所以操作起来速度会比innodb较快。 innodb在安全性方面要好于myisam,由于支持事务处理,insert,update,delete,select。等操作在默认 autocommit=0时,会将每一个操作都当作一个事务,可以进行rollback。如果autocommit=1时,每一个操作后它都会自动提交此 事务,会造成执行的效率很慢,大概会比myisam慢10倍。

3、$a = 1; $b = & $a;

unset($a),$b是否还是1,为什么?

unset($b),$a是否还是1,为什么?

都等于1。

在php中,引用赋值不同于指针的感念,他只是将另一个变量名指向了某个内存地址。此题中:$b = &$a;只是将$b这个名字也指向了$a变 量所指向的内存地址。unset时只是释放了这个名字的指向,并没有释放内存中的值。另一方面讲unset($a),其实也并未真正立刻释放内存中的值, 也只是释放了这个名字的指向而已,该函数只有在变量值所占空间超过256字节长的时候才会释放内存,并且只有当指向该值的所有变量(比如有引用变量指向该 值)都被销毁后,地址才会被释放。

三、

1、写出至少三个函数,取文件名的后缀,如文件'/as/image/bc.jpg',得到 jpg或者.jpg。

function myGetExtName1( $path ){

//取出最后一个出现.这个字符的索引位置

$begin = strrpos($path,'.');

//取出整个字符串长度

$end = strlen($path);

//从最后一个.的索引的位置截取到字符串的总长度后的结果返回

return $begin?substr($path,$begin,$end):'该文件没有扩展名';

}

function myGetExtName2( $path ){

return preg_match_all('/\.[^\.]+/is',$path,$m)?$m[0][count($m[0])-1]:'该文件没有扩展名';

}

function myGetExtName3( $path ){

//找到最后一个出现.字符的索引位置并将其后面的所有字符一起返回

return strrchr($path,'.')?strrchr($path,'.'):'该文件没有扩展名';

}

2、写一个函数,算出两个文件的相对路径如 $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; 计算出 $b 相对于 $a 的相路径。

$a = '/a/b/c/d/e.php';

$b = '/a/b/12/34/c.php';

//求$b相对于$a的相对路径

function getRelativelyPath($a,$b){

//拆分成数组

$a = explode('/',$a);

$b = explode('/',$b);

$path = '';

//将两个数组的索引重置

$c = array_values(array_diff($a,$b));

$d = array_values(array_diff($b,$a));

//去除掉a路径的文件名

array_pop($c);

//将a路径中的目录名替换为..

foreach($c as &$v) $v = '..';

//合并两个数组

$e = array_merge($c,$d);

//拼接路径

foreach($e as &$v)

$path .= $v.'/';

return rtrim($path,'/');

}

3、用二分法(也叫折半查找法)查找某元素,对像可以是有序数组。

//二分法查找一个数组中是否存在某值

function binSearchWithArray($array,$searchValue){

global $time;

if(count($array)>=1){

$mid = intval(count($array)/2);

echo '第',$time++,'次
';

echo '当前数组:';print_r($array);echo '
';

echo '查找位置索引:',$mid,'
';

echo '值:',$array[$mid],'
';

if($searchValue == $array[$mid]){

$time--;

return $searchValue.'被找到了,于第'.$time.'次,索引为'.$mid.'
';

}

elseif($searchValue 

$array = array_slice($array,0,$mid);

return binSearchWithArray($array,$searchValue);

}

else{

$array = array_slice($array,$mid+1,count($array));

return binSearchWithArray($array,$searchValue);

}

}

return $searchValue.'没找到
';

}

$time = 1;

//要查找的数组

$array = array(1,5,8,101,13,19,25,50,60,199,35);

//要查找的值

$searchValue = 13;

//对数组排序,二分法的关键

sort($array);

echo '要查找的值为:',$searchValue,'
';

echo binSearchWithArray($array,$searchValue);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用的内容,这是一个关于npm报错的问。报错信息中指出了文件或目录不存在的错误(ENOENT)以及无法打开文件的错误(open)。这意味着npm在执行操作时找不到指定的文件或目录。具体地,报错中提到的文件路径包括"E:\Web学习\idea\vue\package.json"、"C:\Users\落笔\package"和"D:\乐居\leju-admin-vue-master\src\package.json"。 这些报错可能有以下几个原因: 1. 文件或目录确实不存在:请检查所提到的文件或目录是否存在。确认路径是否正确,并确保文件或目录确实存在于指定位置。 2. 权限问:可能是因为当前用户没有足够的权限来访问或操作指定的文件或目录。请确保当前用户具有足够的权限,并尝试使用管理员权限运行命令。 3. 文件路径错误:请检查报错信息中提到的文件路径是否正确。可能是由于路径拼写错误或目录结构变化导致的错误。 解决这个问的方法包括: 1. 检查文件或目录是否存在:请确认所涉及的文件或目录确实存在于指定位置。如果不存在,请检查路径是否正确,并尝试修复路径错误。 2. 检查用户权限:确保当前用户具有足够的权限来访问或操作指定的文件或目录。如果没有足够的权限,请尝试使用管理员权限运行命令。 3. 更文件路径:如果报错中提到的文件路径与实际路径不匹配,请检查路径是否正确,并根据需要进行修正。 需要注意的是,具体的解决方法可能因为具体的情况而有所不同。建议根据实际情况逐一排查上述可能的原因,并采取相应的解决方法。如果问仍然存在,建议参考报错信息中提供的日志文件,以获取更详细的错误信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [npm ERR! code ENOENT npm ERR! syscall open 错误解决 前端vue启动报错](https://blog.csdn.net/weixin_64854388/article/details/129159358)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [npm ERR! code ENOENT npm ERR! syscall open npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file](https://blog.csdn.net/m0_46374969/article/details/120224717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [npm ERR!... syscall open npm ERR! path C:\Program Files\nodejs\node_cache\_cacache\](https://download.csdn.net/download/weixin_38663701/14040568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值