本文 12833 pv
5
还有一点我想说一下max()函数绝对可以取数组的最大值的!!!!!,还有一些html标签尽然我不知,如果不做这些题的话我可能一辈子都不会知道有可能,哎
总之很多题做的很差,很多没有写好。最后一道程序题我放出来做个记录:
题目是:有组数字,比如5,23,63,53,23,11,6,要求重新排序,排序规则为:第一个为该组数字最大,第二个为剩下数字中最小,第三个为剩下数字中最大,第四个为剩下数字中最小,依次类推。
<?php
function neworder($array){
arsort($array);//从大到小的顺序,但数组下标没有变
$j=count($array);//统计总数
for($i=$j;$i>round($j/2);$i--){
$newarray[]=$array[$i-1];
$newarray[]=$array[$j-$i];
}
//如果取余数不等于0说明给的数组是其数,取数组的个数的整数,把基数取出。
if ($j%2<>0) $newarray[]=$array[floor($j/2)];
print_r($newarray);
$array=$newarray;
}
$array1=array(1,2,3,4,5,6,7,8,9,10,11);
neworder($array1);
?>
多表查询的例子
还有一道题目也想起来了关于多表查询的题目也加上
第一个问题是:查询出所有产品下的产品名称,产品分类。
第二个问题是:查询出前10名的产品点击量的产品名称,点击量。
如果你有好的想法请给我留言,请不要在那故弄玄虚,JJYY。
今天上午到中关村在线面试做的题
© kekehu / 一些琐事 / 2008.06.06 / 13:02 / 12833PV
中关村在线面试我印象最深的是一句“你做了这么多年的PHP,真有点不可思议”,题确实做的很不怎么样,看来自己还有很不足。可能跟我写程序时喜欢封装与复制有关系,比如数据库查询语句我就不爱自己打出来都爱去以前写的复制一个,封装了谁还会想去写,今天有面试做的题就要求关联多个表时的mysql查询的写法,一下子写不出来了,以后看来要注意这一点拉。还有一点我想说一下max()函数绝对可以取数组的最大值的!!!!!,还有一些html标签尽然我不知,如果不做这些题的话我可能一辈子都不会知道有可能,哎
总之很多题做的很差,很多没有写好。最后一道程序题我放出来做个记录:
题目是:有组数字,比如5,23,63,53,23,11,6,要求重新排序,排序规则为:第一个为该组数字最大,第二个为剩下数字中最小,第三个为剩下数字中最大,第四个为剩下数字中最小,依次类推。
<?php
function neworder($array){
arsort($array);//从大到小的顺序,但数组下标没有变
$j=count($array);//统计总数
for($i=$j;$i>round($j/2);$i--){
$newarray[]=$array[$i-1];
$newarray[]=$array[$j-$i];
}
//如果取余数不等于0说明给的数组是其数,取数组的个数的整数,把基数取出。
if ($j%2<>0) $newarray[]=$array[floor($j/2)];
print_r($newarray);
$array=$newarray;
}
$array1=array(1,2,3,4,5,6,7,8,9,10,11);
neworder($array1);
?>
多表查询的例子
"SELECT t1.*, t2.comname, t2.alias FROM `replies` t1 INNER JOIN `com` t2 ON t2.comid=t1.comid WHERE (t1.reproperty='0' OR t1.reproperty='4') AND t2.comname<>'' ORDER BY t1.reptime DESC LIMIT 0, {$mbcon['replynum']}"
还有一道题目也想起来了关于多表查询的题目也加上
第一个问题是:查询出所有产品下的产品名称,产品分类。
SELECT t1.catname, t2.goodsname FROM `cat` t1 INNER JOIN `goods` t2 ON t2.catid=t1.id WHERE t1.catname<>'' AND t2.goodsname<>''
第二个问题是:查询出前10名的产品点击量的产品名称,点击量。
SELECT sum( t1.number ) AS num, t2.goodsname
FROM `views` t1
INNER JOIN `goods` t2 ON t2.id = t1.goodsid
WHERE t1.number <> ''
AND t2.goodsname <> ''
GROUP BY t1.goodsid
ORDER BY num DESC
LIMIT 0 , 10
FROM `views` t1
INNER JOIN `goods` t2 ON t2.id = t1.goodsid
WHERE t1.number <> ''
AND t2.goodsname <> ''
GROUP BY t1.goodsid
ORDER BY num DESC
LIMIT 0 , 10
如果你有好的想法请给我留言,请不要在那故弄玄虚,JJYY。
2010.06.01 18:13
<?php
$arr = array(5,23,63,53,23,11,6);
arsort($arr);
$t = 1;
$count = count($arr);
for($i=0;$i<$count;$i++) {
if($t == 1) {
$t = 2;
echo array_shift($arr);
continue;
}
if($t == 2) {
$t = 1;
echo array_pop($arr);
continue;
}
}
?>
本人第一道题的做法
2009.09.25 09:03
楼上的还是没正确回答问题。。。
2009.09.25 09:00
不是我的方法牛而是你的数据库架构有问题,viewip跟number不可能是共存在一张表里的,你的思路错了。既然是对方的面试题,那我就不方便把答案公布出来,正确的架构应只有点击id,点击ip,对应产品id,或许会单独有一张冗余表,里边存放产品id和该产品总的点击量的对应关系,但绝不会是这种架构,所以,要么是你记错了,要么就是题目本身有问题
FROM `views` t1
INNER JOIN `goods` t2 ON t2.id = t1.goodsid
WHERE t1.number <> ''
AND t2.goodsname <> ''
GROUP BY t1.goodsid
ORDER BY num DESC
LIMIT 0 , 10
2009.09.24 17:35
既然第三个表里有viewip,说明两张表是一对多的关系,而不是单纯1对1二表连查这么简单,两点提示:count,group
2009.09.24 15:55
查询出前10名的产品点击量的产品名称,点击量。你还是做错了....
你说的做错了,是那错了?