>  기사  >  백엔드 개발  >  PHP 面试问哪些问题可以比较准确的反映出应聘者的开发水平?

PHP 面试问哪些问题可以比较准确的反映出应聘者的开发水平?

WBOY
WBOY원래의
2016-06-17 08:30:321188검색

不要泛泛而谈的。

回复内容:

Update: 最后加上了基础题分析说明

两年多之后,更新一下新的面试题.

基础题

场景:


你入职了一家新公司.

上班第一天,接待人给你安排好了座位,然后拉过来一台没拆封的新电脑.

你把电脑连接好之后,按下电源....


好吧,这真是一台新电脑,里边竟然内置了个DOS系统!!


你找同事拿来了操作系统光盘/U盘(这个无所谓了).半个小时后,操作系统安装好了.


  1. 第一件事就是要把LAMP环境搭建起来,这样才好工作.简述搭建LAMP环境过程中的注意点.


  2. LMAP环境搭建好之后,你拿到了第一个开发任务.给公司内部开发一个通用审批系统.公司内部有一个DNS服务器,上边已经配好了这个系统的域名,叫approving.great-company.com,并指向了你本机的ip. 你尝试访问了一下approving.great-company.com ,出现了apache经典的It Works页面,域名是生效的.你打算在桌面新建一个目录叫approving并在这个目录下完成这个系统的开发.如何配置apache使得访问approving.great-company.com的时候能够打开approving/index.php


  3. apache配置好之后,你开始了开发工作.这时,同事给了你一份代码,是另一个人写了一半的通用审批系统.这下好多了,你不用从零开始写代码了.你翻看了他的代码,发现逻辑是这样的: 用户使用email和密码登录这个系统后,程序把这个用户的id放到了session里.通过$_SESSION['uid']就可以拿到登录用户id,然后去数据库里就能把这个用户的个人信息(比如叫什么名字,是哪个部门的)拿到了.接着,你找到了这个通用审批系统主要功能点的代码

<code class="language-html"><span class="nt"><form> <span class="na">action=</span><span class="s">"new-approving.php"</span> <span class="na">method=</span><span class="s">"post"</span><span class="nt">></span>
    审批事项: <span class="nt"><input> <span class="na">type=</span><span class="s">"text"</span> <span class="na">name=</span><span class="s">"title"</span> <span class="nt">/></span>
    详细描述: <span class="nt"><textarea> <span class="na">name=</span><span class="s">"details"</span><span class="nt">></span></textarea></span>
    <span class="nt"><input> <span class="na">type=</span><span class="s">"submit"</span> <span class="na">value=</span><span class="s">"提交"</span> <span class="nt">/></span>
<span class="nt"></span></span></span>
</form></span>
</code>
经验所谈,禁止转载!
上面的回答可能仅仅是针对初级程序员制定的,我讲讲各个层级的吧!

首先我觉得做一份笔试或机试是很重要的,不一定非得全部作对,能看到很多交谈中看不到的问题!

既然是PHP程序员得围绕PHP各方面问问
  • PHP
    基础:
    单引号和双引号区别?
    GET和POST的FORM表单的Action有什么区别?
    Session工作原理
    如何取出数组最后一个值?
    Git分支合并
    翻转字符串"example"
    打印出2014-09-23 23:08:01的时间戳
    Debug方法
    Composer用法

    进阶:
    框架各部分了解程度(路由、设计规则、数据层包装、视图层、可扩展等)
    面向对象的了解程度(静态方法、变量可用范围、抽象类、接口、继承、克隆、魔术方法等)
    命名空间
    测试用例
    异常处理
    缓存数据(memcache、redis、模板缓存、apc等各类缓存)
    正则测试

    高级:
    PHP SPL
    设计模式(挑选两个,比如工厂、单例讲讲)
    排序算法(挑选两个,比如冒泡排序、插入排序讲讲应用点)
    加密算法(挑选两个,比如sha、crc32讲讲应用点以及区别)
    测试驱动开发
    敏捷开发思考
    最优开发模式
    疑难问题解决方法

  • 安全
    分别讲讲XSS、CSRF原理和防范
    SQL注入防范
    上传应该注意哪些问题
    变量覆盖问题
    危险函数该如何处理
    服务基线
    安全域

  • 数据库
    事务处理
    各类锁处理
    分库、主从与离线
    左连接、右连接、交叉连接
    SQL优化
    不常用SQL函数应用
    曾经遇到的坑


  • Linux
    挑选两个命令,比如find、awk用法
    文件排序方法(比如取某文件夹最后修改的文件并将大小显示为以M为单位的)
    python、shell等脚本程度

    写的比较仓促,有漏掉的再补充!

    上面主要侧重技术层面,其实很多技术对于一些人来说学起来很快的,所以还是人聪明或学习能力强最重要。
”你独立搞定过什么,拿证据来“ php 的hashtable
数据缓存
数据库优化 booklist.
Talk about the web security what you know.
Do the DRY in your codes since? if yes,very good,tell me.
Tell me how do you debug your code.The more the better. 1、先明白你要做什么样的事情,然后再考虑找什么样的人。
2、找合适的,不一定技术是最好的,这一点太重要 能在多大程度上挖掘出应聘者的开发水平跟面试官的水平也是有很大的关系的, 你的水平越高, 就可以从简单的开始问起, 难度慢慢加大, 直到对方招架不住, 当然这里面要把握好度, 因为如果你真的准备聘用这个人的话, 给人留下咄咄逼人的感觉也不太好的 世界最好的语言是什么?
答PHP的走人,眼界太窄
不答php的也走人,干一行爱一行 直接给个可以联网的电脑写代码吧,能搜索出来也算。题目可以很简单,比如在pdo的基础上封装个最简单的orm,类或者函数都可以。基本上合格的可以在10-20分钟内完成,给半小时好了。很吃惊的是脱离了框架70%的人连这都不会写。能又快又好完成的,可以在这基础上深入下,再给半小时,要求改写成读写分离的(主库读写皆可,从库只读,读请求均匀分离)。
代码实现里,用绑定的方式避免注入,这是最基础的不用多说了吧? 这个问题主要在于你想招什么。是“php”程序员,还是php“程序员”。看你着重哪个了。
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.