Home >Backend Development >PHP Tutorial >今天的笔试题

今天的笔试题

WBOY
WBOYOriginal
2016-06-23 14:19:07877browse

本帖最后由 bing15 于 2013-08-05 18:13:37 编辑

1.在一个订单系统购物中,系统可能会因为网络比较慢,造成客户多次点击提交,有什么好的解决方案。

2.在一维的数组中,数据类型是整型,使用冒泡排序算法进行从小到大的排序。

3.你是否使用过事务处理,请最少写出3个事务处理的函数。

4.请遍历出一个文件夹下的所有文件及子文件夹的函数。



回复讨论(解决方案)

1.点击后先使按钮不可点,提示:"正在提交...",直到返回结果后再恢复.

2.略

3.没用过..

4. ....这个真没用过

汗 面试不上的节奏

都是比较基础的题,没什么太多可说的。
1. 点击一次提交后 提交按钮置灰(不可点),几秒后恢复(或者相应的回调函数),不仅可以防止重复提交,而且防止由于大量重复提交对服务器的冲击。

4. 递归处理之。需要注意的是如果是linux系统,要避免对. 和.. 目录的重复循环搜索。

没人写第二个,那我就写第二个吧

function maopao($arr){ $len = count($arr); for($i=1; $i<$len; $i++)//最多做n-1趟排序 {  $flag = false;    //本趟排序开始前,交换标志应为假  for($j=$len-1;$j>=$i;$j--)  {   if($arr[$j]<$arr[$j-1])//交换记录   {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了     $x=$arr[$j];     $arr[$j]=$arr[$j-1];     $arr[$j-1]=$x;     $flag = true;//发生了交换,故将交换标志置为真   }  }  if(! $flag)//本趟排序未发生交换,提前终止算法  return $arr;    }}$shuz = array('2','4','1','8','5');$bb = maopao($shuz);print_r($bb);

适合我的水平,我喜欢。

3.事物处理几个点
首先数据引擎要是innoDB

事物处理就是把一堆sql命令放到一起来执行,所有sql语句都执行成功,那么这次事物就是成功的,就可以提交了
如果有sql命令没有成功,那么这次事物就是失败的,所以可以调用rollback方法把前面的操作全部撤销;

事物处理的过程
首先开启事物
set autocommit=0;
.....
sql
....
if(true)
commit();
else
rollback();

function travelPath(&$fileItem,$path) {
if(file_exists($path)) {
if(is_dir($path)) {
if($handle = opendir($path)) {
foreach ($item as $handle) {
if($item == '.' || $item == '..')
return ;
if(!is_dir($item)) {
$fileItem[] = $item;
return;
}

travelPath($fileItem, $item);
}
}
}
}
}

适合我的水平,我喜欢。

1.点击后先使按钮不可点,提示:"正在提交...",直到返回结果后再恢复.

2.略

3.没用过..

4. ....这个真没用过

汗 面试不上的节奏
人家都说网络慢了,还正在提交。正在提交都不显示。

我觉得用表单令牌。可以阻止重复提交。

我觉得用表单令牌。可以阻止重复提交。

那在漫长的等待过程中给用户传达什么信息呢? 再点没反应? 还真不如我说这个,点了先改成"正在提交中..."然后去提交,收到结果再改回来

php面试都要这样吗?那我还是再学学吧!


我觉得用表单令牌。可以阻止重复提交。

那在漫长的等待过程中给用户传达什么信息呢? 再点没反应? 还真不如我说这个,点了先改成"正在提交中..."然后去提交,收到结果再改回来
我说的是能真在的阻止重复提交,而你的不一定,如果网络不通的话,表单的页面是不会变的,自然也不会改在自在提交。再说,如果你说你用的是JS变的,那我告诉你如果没人把JS去了怎么样,人家可以一直提交对不对?你不要说用户不会这么做,那我告诉你如果是黑客这么做你怎么办?



我觉得用表单令牌。可以阻止重复提交。

那在漫长的等待过程中给用户传达什么信息呢? 再点没反应? 还真不如我说这个,点了先改成"正在提交中..."然后去提交,收到结果再改回来
我说的是能真在的阻止重复提交,而你的不一定,如果网络不通的话,表单的页面是不会变的,自然也不会改在自在提交。再说,如果你说你用的是JS变的,那我告诉你如果没人把JS去了怎么样,人家可以一直提交对不对?你不要说用户不会这么做,那我告诉你如果是黑客这么做你怎么办?

表单令牌是有用的.但是请注意楼主的条件" 网络比较慢造成多次提交",这种情况下,可能表单令牌还没有进行匹配和失效,用户就已经多次点击提交按钮了,所以用JS来控制比较合适.
而且,这两者并不冲突 可以都用.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn