笔者php菜鸟,上午参加去哪儿校招笔试,趁还记得题目和大家分享一下。
先是开发3道大题(其实也不是很大)
-
要求实现一个删除指定数组中数字。
自己当场函数没想起array_search和array_splice就用foreach+array_merge+array_slice做的,不要见笑~~
function removeElement(array $arr,$val){
if($key=array_search($val)){
return array_splice($arr,$key,1);
}
return $arr;//无此数字直接返回原数组
}
-
实现一个餐厅叫号功能,面向两种客户:普通和VIP,普通客户正常排号,VIP随时可插号,但在同类用户中按先后排号。要求实现两个函数 addCusomer(string phoneNum) 和current()
按我的理解就写了个类,但是成员函数中调用变量忘记$this去调用了,哎画蛇添足~~
修正版
class MarketCall{
private $common=array();
private $this->vip=array();
function is_VIP($phone){
//判断是否为VIP
}
function addCustomer($phone){
if(is_VIP($phone)){
array_push($this->vip,$phone);
}else{
array_push($this->$common, $phone);
}
}
function current(){
if(!empty($this->vip)){
return array_shift($this->vip);
}
if(!empty($this->common)){
return array_shift($this->common);
}
return NULL;
}
}
c.实现中文数字向阿拉伯数字转换,如贰仟叁佰亿===》2300 0000 0000
对于这个题目比较常见我就说我的方法不写代码了
-
建立两个数组.
-
num:一个是0-9的汉字对应 像 '壹'=>1;另一个是
-
lev: 进制位的汉字对应 像 '百'=>100
-
然后对汉字进行从左向右遍历,如当前字符存在于num的键值中就转换为数字,如如是lev的键值就与对应进制相乘
-
还有要注意的是每遇到 亿 或 万 就将之前计算结果保存,然后归零变量,以免重复进制相乘。
-
然后有两道前段题目(选做)
-
画出CSS盒模型,并用js代码写出求div的宽度和位置信息,考虑兼容
笔者css一般,但是盒模型还是绘画的,毕竟firefox里经常见到,但是兼容求宽高就不会了,直接写的jQuery的width()和position()方法,这里就不误导大家了
-
对一个数组(如[1,2,3,4,5])的元素顺序打乱输出,到要求100次内不重复
我当时的思路是Math.random()随机打乱+闭包函数保存已随机过的数组键拼接字符串用于唯一判断
但回来想保存值序列不更好么,另查了大神的打乱数组方式,综合一下,和大家分享
<script>
function random(a, b){
//用于打乱数组的排序函数
return Math.random()>.5 ? -1 : 1;
}
//闭包函数
var uniqueArr=(function(uniqueStr){
var arr=[];
return function(uniqueStr){
for(var i=0,len=arr.length;i<len;i++){
if(arr[i]==uniqueStr){
return false;
}
}
arr.push(uniqueStr);
return arr;
};
})(null);
//打乱数组函数
function randomSort(arr){
var res=arr.sort(random);//打乱的数组
var keys=res.join('');//数组值串
if(un=uniqueArr(keys)){//不重复
//console.log(un,res);//测试用
return res;
}else{
return randomSort(arr);
}
}
var arr = [1, 2, 3, 4, 5];
randomSort(arr);
randomSort(arr);
randomSort(arr);
randomSort(arr);
randomSort(arr);
</script>
然后是测试,不感冒,但是看着是要考 代码测试和案例分析
最后是android开发的选做题,问的是MVC,Activity后台生命周期,还有一个忘了,网上应该能查到。
欢迎与我讨论,提高。
--phpnewbie