笔试题
这次笔试题可以说相当简单了,岗位主要应聘的是php,web,爬虫方向的,贴出题目,以及自己的解答吧。
第一题:下面代码只有在PHP7才能执行成功。在PHP5下,试使用array_map函数来代替array_column函数来实现上面的功能从而得到相同的$usernames返回值。
class User
{
public $username;
public function __construct(string $username)
{
$this->username = $username;
}
}
$users = [
new User('user 1'),
new User('user 2'),
new User('user 3'),
];
$usernames = array_column($users, 'username');
我的解答:
class User
{
public $username;
public function __construct(string $username)
{
$this->username = $username;
}
}
$users = [
new User('user 1'),
new User('user 2'),
new User('user 3'),
];
function username($v){
return $v->username;
}
$usernames = array_map('username',$users);
第二题:写一个方法,把金额数字从一个字符串中提取出来,并且处理好欧元的格式(请注意小数点和逗号)。输入输出结果如下:
EUR 1.409,00 => 1409
€ 409,05 => 409.05
¥409.50 => 409.5
CNY 1,000 => 1000
我的解答:
function transfer($value){
if(!is_string($value)){
return false;
}
$result='';
$partterns='/(EUR|€|¥|CNY)(\s)*(\d+((\.|\,)\d+)*)/i';
preg_match($partterns,$value,$matchs);
if($matchs==null){
return false;
}
$tmp_number=preg_split("/,|\./i",$matchs[3]);
for($i=0;$i<count($tmp_number)-1;$i++){
$result.=$tmp_number[$i];
}
$t=$tmp_number[count($tmp_number)-1];
if($t!=="00" && $t!=="0" && $t!==""){
if(strlen($t)>=3){
$result.=$t;
}else{
if($t[strlen($t)-1]==="0"){
$t=$t[0];
}
$result.=".".$t;
}
}
return $result;
}
3、【算法题】实现函数 repeatedString(string $string, int $total): int
目标:计算重复字符个数。
例子–输入:
aba
10
表示将 aba 重复 n 次,使字串长度为 10,计算第一个字符串:a 出现的次数。
输出:
7
我的解答:
function repeatedString($string,$total){
if(!is_string($string)){
return 0;
}
if(!is_numeric($total)){
return 0;
}
$s_len=strlen($string);
if($s_len>$total){
return 0;
}
$count=1;
$pos_count=array();
$first_l=$string[0];
$pos_count[0]=1;
for($i=1;$i<$s_len;$i++){
if($string[$i]===$first_l){
$count++;
}
$pos_count[$i]=$count;
}
$count=$count*(intval(floor($total/$s_len)));
$count+=$pos_count[($total%$s_len)];
return $count;
}
题目算简单,不过公司极客氛围浓厚,是个提升自己技术的好地方!想知道?自己去猜