第二次面试的公司是一家游戏公司,总公司在上海,公司的办公室在酒店里,挺不错的。我对这家公司比较满意,同时也很希望进入这家公司。进入公司后,首先是在人事妹子那拿了份面试题和面试需要填写的资料填了。 面试题都是十分简单的PHP题目,但是由于几乎我半年没碰PHP了,我答得十分不好(作为一个写了两年PHP的我,羞愧捂脸)。
上海邑世游戏公司
面试我的是一个比较年轻的哥们,比较实在,问的问题都是根据做的面试题来的。
$a = 10; $b = &a; ++a; unset($a); echo $b;
11
这里考到了PHP中的引用,和unset函数对引用操作的问题。首先需要明白,PHP中的引用并不等价与C中的指针 unset
函数对引用的操作仅仅是断开了引用和值之间的联系,这并不意味这变量中的内容被销毁了。所以题 中的变量 a
的内容经过 unset
操作并没有被销毁。所以 $b
的值为 11
。
假设从数据库中读取总共有 $total
条记录, 每一页有 条记录,请问总共要分多少页?
$pages =
这道题考的是简单的分页计算,答案是:
$pages = $total%$perpage == 0 ? (int)($total/$perpage):(int)($total/$perpage+1);
通过给定的年份和月份,计算出该年该月的最后一天的日期。
function DateofYearMonth($year,$month){ $date = return $date; }
这道题主要考的PHP对日期的操作,可以使用 date
和 strtotime
函数来实现,思路是
function DateofYearMonth($year,$month) { $firstdate = date("Y-m-01",strtotime("$year-$month")); return date('Y-m-d',strtotime("$firstdate+1 month - 1 day")); }
匹配并输出以下字符串中的所有数字, 'Abc_37_jk_3'
该题主要是考了PHP中的正则表达式的知识。可以使用 preg_match
实现
$str = 'Abc_37_Fkj_3'; preg_match('/.*_(\d{2})_.*(\d)$/',$str,$matches); $matches = array_slice($matches,1); var_dump($matches);
使用jquery写出一段让一点击相应行的删除按钮就删除相应的行的效果。
<html> <table class="example_table"> <tr> <td class="tb">column 1td> <td><button class="del"> 删除 button> td>tr> <tr> <td class="tb">column 2td> <td><button class="del"> 删除button> td>tr> <tr> <td class="tb">column 3td> <td> <button class="del"> 删除 button> td>tr> table> html>
这里主要是考察了jquery的基本知识点,使用如下代码就能达到这种效果。
<html> <table class="example_table"> <tr> <td class="tb">column 1td> <td><button class="del"> 删除 button> td>tr> <tr> <td class="tb">column 2td> <td><button class="del"> 删除button> td>tr> <tr> <td class="tb">column 3td> <td> <button class="del"> 删除 button> td>tr> table> <script type="text/javascript"> $(".del").click(function() { $(this).parents("tr")[0].remove(); }) script> html>
这道题其实主要涉及到jquery的选择器的相关和一些基本的dom操作函数,只要了解这两个知识点的话,这道题基本就没什么问题了。
假设数据库中有两张表,一张users表存储游戏用户的用户信息,一张fees表存储游戏用户在游戏中的付费记录 。两张表的字段为:
那么请问如何查出在游戏中消费最多的10个用户的用户名和消费总金额,请写出相应的 SQL
语句。
这道题主要是考察 SQL
的基本知识。由于游戏公司的数据库通常比较大,所以相对来说比较注重于应聘者的数据库基础,以及 数据库优化方面的知识。 可以使用如下的SQL语句达到目的。
select userid,sum(costs) as total_costs from users,fees where users.userid = fees.uid group by uid order by total_costs desc limit 10;
这里也要同时考虑下查询语句的性能问题,尽量避免 join
语句和 SQL
语句中尽量涉及比较少的表字段。
写出你常使用的Linux命令,越多越好。
-文件操作
ls --查看文件夹中的文件
dd --复制和转换文件
mv --移动文件
cp --复制文件
mkdir --创建文件夹
touch --创建文件
find --查找文件
tree --查看文件系统的结构
rm --删除文件
ln --创建文件链接
cat --查看文件内容
less --查看文件的内容
more --查看文件的内容
pwd --显示当前的文件路径
vim --文件编辑
emacs --文件编辑
-磁盘管理
fdisk --磁盘分区
gdisk --磁盘分区
df --查看磁盘空间和状态
du --计算文件在磁盘中占用的空间
--进程管理
top --实时查看系统进程状态
htop --实时更加强大的系统进程查看器
ps --查看系统进程信息
jobs --查看当前会话的进程信息
fg --将当前会话的后台进程唤醒到前台
bg --将当前会话的前台进程隐藏到后台执行
kill --杀死进程
--网络管理
ping --通常用来测试网络是否联通
netstat --查看网络连接情况
nmcli --无线网络管理
pppoe --拨号上网工具
--帮助工具
man --查看相关手册
info --查看比较详细的手册
--文本处理工具
grep --正则表达式匹配
awk --文本模式搜索和处理工具
sed --文本过滤和转化的流处理器
--系统管理
crontab --定时化任务
这道题主要考察的是Linux基础知识。这道题是一道很灵活的题,但是面试官可能会根据你写的常用命令,问你一些这些命名的使用场景,或者需要结合多个命令来完成一个任务的场景。所以要在这一块表现的好一些。最好都 好好的准备一下。
公司有个活动页面,现在需要统计页面访问数,请谈一谈你的思路。