面试时可以从哪些方面提问应聘者
下面是好好范文网小编收集整理的面试时可以从哪些方面提问应聘者,仅供参考,欢迎大家阅读!
不清楚是什么原因,面试了好多人,有经验浅的,也有工作十几年的,但没有遇到一个能把下边的基础题回答好的.
我都很奇怪,他们写代码的时候都不考虑数据验证,SQL注入,XSS的问题吗???
这样的代码是怎么敢放到线上的?
迫不得已,又出了一套笔试题,面向1-5年工作经验的PHPer,分享给大家.
这套题共7个问题,前5题面向3年以内工作经验的,第6题期望3年以上的能做出来,第7题期望5年以上的能做出来.
1.
2.
创建一个数据库php_manual,新建表index,这个表有3个字段: id, title, link.然后创建一个数据库用户php_manual_user,密码是php_manual_pass.把上述数据库导出成sql,把SQL语句贴到下面,使得我们在mysql命令行终端里执行这些sql语句可以完成上述操作.
3.
写一个php脚本,读取第1题的结果langref.txt并解析出title和link,插入第2题创建的数据库表index里.
4.
5.
写一条shell命令,执行此命令可获取到的内容并将页面里的所有大写的PHP转成小写,最后将结果保存到/tmp/langref.html里.
6.
(加分题) 改写下边的脚本,使得当接收到SIGINT信号时打印出"caught signal SIGINT, exit"并退出.<?php while (1) { echo "nn"; echo "I am doing something importantn"; echo "if i am interruptted, the data will be corruptedn"; echo "be carefuln"; echo "nn"; sleep(3); }
7.
(加分题) 有一个超级大的int数组要求和,假设有1000W,写一个php脚本,根据当前机器(假设是多核的)cpu的核数,fork出这么多子进程,把数组平分,每个子进程计算其中一部分,并把结果保存到/tmp/子进程pid.txt.最后父进程汇总并输出求各结果.
=============================================================
Update: 最后加上了基础题分析说明
两年多之后,更新一下新的面试题.
基础题
场景:
你入职了一家新公司.
上班第一天,接待人给你安排好了座位,然后拉过来一台没拆封的新电脑.
你把电脑连接好之后,按下电源....
好吧,这真是一台新电脑,里边竟然内置了个DOS系统!!
你找同事拿来了操作系统光盘/U盘(这个无所谓了).半个小时后,操作系统安装好了.
第一件事就是要把LAMP环境搭建起来,这样才好工作.简述搭建LAMP环境过程中的注意点.
LMAP环境搭建好之后,你拿到了第一个开发任务.给公司内部开发一个通用审批系统.公司内部有一个DNS服务器,上边已经配好了这个系统的域名,叫,并指向了你本机的ip. 你尝试访问了一下 ,出现了apache经典的It Works页面,域名是生效的.你打算在桌面新建一个目录叫approving并在这个目录下完成这个系统的开发.如何配置apache使得访问的时候能够打开approving/index.php
apache配置好之后,你开始了开发工作.这时,同事给了你一份代码,是另一个人写了一半的通用审批系统.这下好多了,你不用从零开始写代码了.你翻看了他的代码,发现逻辑是这样的: 用户使用email和密码登录这个系统后,程序把这个用户的id放到了session里.通过$_SESSION['uid']就可以拿到登录用户id,然后去数据库里就能把这个用户的个人信息(比如叫什么名字,是哪个部门的)拿到了.接着,你找到了这个通用审批系统主要功能点的代码
<formaction="new-approving.php"method="post"> 审批事项: "text"name="title"/> 详细描述: <textareaname="details"></textarea"submit"
<?phpinclude__DIR__.'/conndb.php';$title=$_POST['title'];$details=$_POST['details'];$accessuniqid"INSERT INTO approving(title, details) VALUES ('$title', '$details')");$insertIdgetLastinsertId"INSERT INTO access(approving_id, access) VALUES ($insertId, $access)");// 通知boss@审批'boss@';$subject="请审批 $title$detailsn<a href="approve.php?access=$access">快速审批链接include __DIR__ . '/lib/mail.php';$mail = new Mail();$mail->addTo$mail->setSubject($subject);$mail->setBodyHtml(nl2br($mail->send();header('Location: success.php');
看到这里,你大概看明白了.用户登录进来之后,提交一个表单,填写好要boss审批什么东西以及详细的描述,程序接收到提交数据后,除了把审批事项存放到approving表之外,还生成了一个access,发送给了boss,应该是boss在邮件里点击这个”快速审批链接”就不需要登录系统就直接把事项审批了.接着,你找到了approving.php的代码:
<?phpinclude__DIR__.'/conndb.php';$access'access'"SELECT approving_id FROM access WHERE access = '$access'No such access');}$approvingId'approving_id'];$approvingRow"SELECT * FROM approving WHERE approving_id = $approvingId'<h3>审批事项: ',$approvingRow['title'],'</h3>';echo'<p>详细描述:</p>';echo'<p>'$approvingRow['details']),'</p>';echo"<a href="pass.php?access=$accessecho ""deny.php?access=$access
Review上述三段代码,指出代码中存在的问题.
4. 在你翻看完成了大部分代码之后,你发现里边有一个TODO尚未完成.
// TODO:如果两天了boss还没有审批,那么系统就再发一封邮件催一下.
这个该怎么实现?
进阶题
有哪些得意之作?
是否实践过PHP编码规范?
如何做质量控制?
如何做测试?
js命名空间的作用?
是否用过jslint?
是否写过jQuery plugin?
Linux使用多长时间了?
常用工具: vim, grep, sed awk, wget, curl
写过哪些shell脚本?
做过服务器管理吗?
接触到的Mysql数据库表最大是多少行记录?
使用哪种存储引擎?
出现性能瓶颈如何定位解决?
MyISAM与InnoDB索引的区别?InnoDB的Primary Index 和 secondary Index有何区别?
你手里有300W份简历的工作经历和教育背景?如何从中提取出学校/专业/公司?
学习一个新框架如何入手?
------------------------------------------------------------------------------------
为什么我更新了面试题?
招研发的必须实打实的上代码,我的确遇到了一些面试时回答问题还不错,一写代码让人头疼的工程师.
所以招人时分了两个层次:
1) 期望面试者入职工作后,代码写出来,一两天内能发布到线上.(对应基础题)
2) 了解面试者对编程认知的广度和深度.(对应进阶题)
基础题分析说明
1. 搭建LAMP环境过程中,一定要把错误报警全都打开(安装了xdebug后,错误报警会更显眼,track_errors也很有用...)
2. 会配虚拟主机
3. Code Review.
首先,这三段代码均缺少权限判断.
第2段代码的问题:
1) 对提交过来的数据没有任何验证.
如果没有提交title字段,$_POST['title']就报undefined index了
如果title,details为空,或者过长都会有问题
2) 数据库操作部分有SQL注入
一个操作涉及到多个表时需要考虑事务的问题
第3段代码的问题:
1) 数据验证
2) SQL注入
3) XSS
4. 写一个在CLI运行php程序,然后放入cronjob即可.
熟悉CLI环境还是需要的,让一个新人明白数据不一定是从他写的表单里提交过来的,好费劲.
------------------------------------------------------------------------------------
我觉得,如果一个应聘者能对如下关于LMAPJ(J指Javascript)方面的问题有自己的实战经验或者能提出解决方案的,都是可以考虑录用的。以下只是个人最近的一些思考,不见得合理,但是我会很愿意和能清楚解答如下问题的人在一起工作的。 ====================================== == PHP == # 编码规范 你在以前的项目中采用什么样的编码规范? # 正则 你对正则有多熟悉?在以前的项目中用过吗?用在哪些地方了?是自己写的,还是从网上找的?