ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

360春招PHP笔试真题解析:高频考点拆解与避坑指南

360春招PHP笔试真题解析:高频考点拆解与避坑指南 最近很多准备春招的读者问我大厂笔试题到底要怎么刷才有效。说实话与其零零散散看一堆面经不如找一份成体系的大厂真题逐题吃透。我翻出自己整理的一份老材料——2018年360公司春招笔试PHP开发工程师客观题合集这份题集覆盖了PHP基础语法、数组与字符串、面向对象、框架认知、数据库、网络协议、Web安全等多个维度题量大、范围广用来检验PHP工程师的基础功底非常合适。如果你是准备校招或社招的PHP开发者或者想系统查漏补缺这份题集值得你花时间细看。这份题集好在哪它不只是考你“会不会写PHP”而是考你“懂不懂PHP”。很多题看着简单实际埋了不少坑尤其是一些底层机制和边界情况没踩过坑的人很容易掉进去。下面我就按考点模块拆开讲把每类题目背后的原理和答题思路都说清楚顺便整理一些我当年踩过的坑。1. 整体设计与考点分布从360笔试看大厂PHP工程师的能力模型1.1 笔试结构与题型概览先说说这份题集的基本形态。360的春招笔试一般通过第三方在线笔试平台完成客观题占了很大比重题型以单选题和多选题为主部分场次会混合判断题。时间通常在90到120分钟题量在50到80道之间整体节奏比较紧基本要求你看到题目后短时间内就能锁定答案。从内容分布来看可以粗略分成六块PHP语言基础变量、作用域、数据类型、运算符、流程控制数组与字符串处理数组函数、字符串函数、正则面向对象与设计思想类、接口、抽象类、魔术方法、设计模式数据库与缓存MySQL、Redis、PDO、事务、索引网络与协议HTTP状态码、Session/Cookie、跨域、JSONPWeb安全与框架常识SQL注入、XSS、CSRF、ThinkPHP等这个分布不是随意排列的它基本映射了一个PHP工程师日常工作中最常打交道的技术面。笔试只是第一道筛选除了筛掉基础不牢的人更重要是让面试官后续有据可循——你哪块错了面试就重点问哪块。1.2 从考点反推360的用人偏好结合360做安全业务的背景你会发现这家公司对底层机制和Web安全特别敏感。普通小厂可能只考“这段代码输出什么”360会在此基础上追加“为什么”和“怎么防”。比如考SQL注入时不问SQL语法而是问预处理为什么能防注入、PDO的模拟预处理和本地预处理有什么区别。这就是典型的“知其然还要知其所以然”出题风格。再比如对框架的考察360并不执着于某个框架的API怎么调用而是关注框架底层的运行流程——入口文件加载了什么、路由是怎么解析的、ORM是怎么把查询构建器转成SQL的。所以备考时不能只背函数名要理解框架的设计思路。2. 核心考点逐层拆解把每个知识点的坑都填平2.1 变量、作用域与引用最容易被忽视的基础分PHP的变量机制是笔试的高频区而且出的题往往带有迷惑性。先说作用域PHP的函数默认不会自动访问外部变量这点和JavaScript完全不一样。如果你在函数里直接使用一个全局变量PHP会把它当成一个新的局部变量来处理。$name 360; function test() { echo $name; // 报错Undefined variable } test();如果想让函数访问外部变量要么用global关键字声明要么通过$GLOBALS超全局数组。这两个方法看着差不多实际有细微差别global $name是创建了一个与全局变量同名的引用而$GLOBALS[name]是直接操作全局符号表。在笔试里如果题干问你“以下哪种方式可以修改全局变量”这两个选项一般都会出现你能分清原理就不会选错。再说引用传递这是另一个高频坑。函数参数加了就表示传引用而不是传值函数内部对这个参数的修改会反映到外部变量。很多考生知道写function foo($var)但一旦结合循环或递归就乱了。$arr [1, 2, 3]; foreach ($arr as $value) { // 什么都不做 } foreach ($arr as $value) { // 什么都不做 } print_r($arr);这道题很多人会答错。第一个foreach用引用遍历结束后$value仍然指向$arr[2]第二个foreach再次赋值$value时实际是反复修改$arr[2]。最终$arr[2]会被改成$arr[1]的值也就是2。这类题在真实笔试中出现率极高而且答错的人比例相当高。核心教训就一条用引用遍历完数组后务必unset($value)。静态变量也是常客。static修饰的局部变量只会在第一次执行时初始化之后函数每次调用都会保留上次的值而不是重新赋值。笔试里经常用递归或循环来考察这一点记住“静态变量跨调用存活”就能应对大多数情况。2.2 数组与字符串送分题和陷阱题各占一半数组是PHP的核心数据结构也是笔试中出题最灵活的模块。常见的考察方式有几种。第一种是函数功能的对比。array_map、array_filter、array_walk这三个函数长得像、用起来像但行为完全不同。array_map对数组每个元素执行回调并返回新数组不会修改原数组array_walk也是对每个元素执行回调但它会修改原数组的元素值array_filter则根据回调的返回值过滤元素。笔试常考“哪个函数会改变原数组”答案是array_walk。第二种是合并运算符的边界情况。array_merge和都能合并数组但规则不同。array_merge遇到字符串键名时后面的值会覆盖前面的值而运算符是“左边优先”只在左边不存在该键名时才添加右侧元素。这个区别在笔试题里经常出现。$a [a 1, b 2]; $b [b 3, c 4]; var_dump(array_merge($a, $b)); // [a 1, b 3, c 4] var_dump($a $b); // [a 1, b 2, c 4]第三种是松散比较与严格比较。PHP的会做类型转换则要求类型和值都相等。笔试里经典的坑是0 false为true0 false为falseabc 0也是true因为PHP会把abc转成整数0再比较。这类题没有任何技巧可言就是靠扎实的基础知识堆出来的建议考前专门把PHP类型比较表过一遍。字符串函数部分重点看substr、strpos、str_replace、trim这些函数的行为。这里有个容易忽略的坑strpos判断子串是否存在时如果子串出现在第0个位置返回的是0而0在布尔判断里是false。所以正确写法是if (strpos($str, 360) ! false)而不是if (strpos($str, 360))。这个点在笔试的错误选项里出现过无数次。2.3 面向对象与魔术方法理解PHP的钩子机制PHP的面向对象考察点比Java少很多但有自己的特色尤其是魔术方法。__construct、__destruct、__get、__set、__call、__toString、__clone、__sleep、__wakeup、__invoke这些方法在特定时机被自动调用是理解框架底层的前提。比如__get和__set在访问或设置不可访问属性时触发。ThinkPHP这类框架里的模型动态属性底层就是靠这两个魔术方法实现的。__call则是调用不存在的方法时触发很多链式操作就是靠它实现的。笔试里考得比较多的一个点是在__construct里调用父类构造函数parent::__construct()以及self、static、parent三者的区别。self指向定义时所在的类static指向实际调用的类也就是晚静态绑定parent指向父类。这个区别在继承场景下尤其关键。举个例子父类方法里用self调用一个静态方法子类继承后调用父类方法self仍然指向父类但如果用static则指向子类。很多框架的laravel风格代码就是靠static::实现灵活的模型继承。Trait也是PHP 5.4以后的重要特性笔试偶尔会考它的优先级当前类的成员方法会覆盖Trait的方法Trait会覆盖父类的方法。这个优先级顺序需要记熟。接口和抽象类的区别同样是高频题抽象类可以有属性、可以有方法实现接口所有方法必须是公有的抽象方法一个类可以继承一个抽象类但可以实现多个接口。这些概念性的题没有难度但属于送分题建议拿稳。2.4 PHP框架认知ThinkPHP 3.2.3时代的大厂考点这份题集出现在2018年那个阶段国内PHP生态里ThinkPHP 3.2.3还非常流行。它的官方标语是“fast simple oop php framework”在当时的淘系电商、企业官网、后台管理系统中出现率超高。360笔试里涉及框架的题目通常不会直接问ThinkPHP的API而是问MVC流程、URL路由、ORM、自动验证等概念。MVC的完整流程是浏览器发起请求 - 入口文件index.php接收 - 框架加载公共文件 - 路由解析URL拿到模块/控制器/方法 - 实例化控制器并调用方法 - 方法内调用模型取数 - 渲染模板 - 返回响应给浏览器。ThinkPHP 3.2.3的默认URL格式是index.php?mAdmincUseraindex也支持伪静态重写成Admin/User/index。如果笔试考到“ThinkPHP中URL路由的解析顺序是什么”基本上就是问这个。关于伪静态我之前看到不少人在Apache和Nginx的伪静态配置上翻车。Nginx下常见写法是location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?s$1 last; } }Apache则需要开启mod_rewrite模块并在站点根目录放置.htaccess文件。核心原理就一句话把不存在的文件或目录请求统一转给入口文件处理由框架的URL解析器来决定调哪个控制器。面试官如果延伸问“为什么Nginx的try_files比if写法更推荐”你至少要知道try_files $uri $uri/ /index.php?s$uri这种方式更高效、更符合Nginx的推荐配置。框架题要理解的不只是配置还有它背后的“分层解耦”思想。模型层管数据、视图层管展示、控制器层管调度各司其职。笔试题目经常会给你一段控制器代码问你“这段代码把SQL查询写在控制器里有什么问题”答案就是职责混乱、不利于维护和测试。2.5 数据库与缓存高并发场景题的基础设施数据库题目在360笔试中的占比不低主要考MySQL和Redis。MySQL方面有几个考点几乎年年出现索引失效、事务隔离级别、SQL优化思路、explain执行计划。索引失效是常见的送命题。比如对索引列使用函数或运算WHERE DATE(create_time) 2024-01-01会导致索引失效正确写法是WHERE create_time 2024-01-01 AND create_time 2024-01-02再比如左侧模糊匹配LIKE %abc无法使用索引但右侧模糊LIKE abc%可以。笔试里经常把这些情况混在一起让你选出“会导致索引失效的写法”。事务隔离级别也是高频题。MySQL默认的隔离级别是REPEATABLE READ可重复读这点和Oracle默认的READ COMMITTED不同。四个隔离级别从低到高是READ UNCOMMITTED读未提交、READ COMMITTED读已提交、REPEATABLE READ可重复读、SERIALIZABLE串行化。每个级别能解决什么问题、还存在什么问题最好用一句话记清楚。笔试题经常以“某个并发场景出现了脏读最低需要什么隔离级别”的形式出现答案就是READ COMMITTED。缓存方面主要考Redis的基本数据结构和应用场景。比如用Redis做字符串缓存、用List实现队列、用Set做去重、用ZSet做排行榜。360笔试会结合PHP场景来问比如“用户登录session存Redis需要注意什么”核心是设置过期时间、考虑序列化方式、注意key的冲突。还有一个常见考点Redis的过期删除策略是惰性删除加定期删除不是主动检测所有key所以一些冷数据可能在一段时间内仍然占用内存。这个和PHP的session垃圾回收机制很像可以放在一起理解。PDO的预处理也是每年必考。为什么预处理能防SQL注入因为预处理把SQL语句和参数分开传输数据库层先编译SQL结构再将参数作为纯数据绑定不会改变SQL语义。PDO默认的PDO::ATTR_EMULATE_PREPARES在部分版本中是开启的也就是说它是在客户端做了转义模拟而非真正使用MySQL的预处理协议。如果想要更强的安全性可以显式关闭模拟预处理$pdo new PDO($dsn, $user, $pass, [ PDO::ATTR_EMULATE_PREPARES false, PDO::ATTR_ERRMODE PDO::ERRMODE_EXCEPTION, ]);这里顺便提一句热词里有人问到“PHP数据库PDO访问封装类下载”其实不建议直接下载别人的封装类尤其是老项目里的代码。你最好自己封装一层连接管理至少包含单例模式、错误处理、预处理查询这几个能力。下载的类往往缺乏场景适配反而成为安全隐患。2.6 网络、协议与跨域PHP工程师必须过关的HTTP功底PHP工程师日常打交道最多的协议就是HTTP所以网络知识在笔试里从来不缺席。最基础的是HTTP状态码200表示成功、301是永久重定向、302是临时重定向、304是协商缓存命中、403是禁止访问、404是资源不存在、500是服务器内部错误、502是网关错误。笔试常考的是302和304的场景判断比如“浏览器访问资源时返回304代表什么”答案是“资源未修改可以使用本地缓存”而不是“资源已删除”。Session和Cookie的区别也是老生常谈。Cookie存在客户端Session数据存在服务端Session ID通常通过Cookie传输。在分布式部署时如果有多台PHP应用服务器需要把Session存到Redis或数据库中共享否则用户在A服务器登录后请求被转发到B服务器就识别不了。这个场景题在笔试里出现频率极高答案就是“Session共享”。跨域问题在热词里单独出现了“php跨域jsonp”说明这个是非常重要的实战点。浏览器同源策略规定JavaScript只能访问同协议、同域名、同端口下的接口。解决跨域的方式有好几种CORS、JSONP、反向代理、WebSocket等。笔试题里如果问“为什么JSONP能实现跨域而Ajax不能”核心原因是script标签的src引入外部脚本不受同源策略限制JSONP利用这个特性动态创建script标签请求一个带callback参数的URL服务端返回一段可执行的JavaScript代码把数据包在回调函数里传给前端。在PHP里实现JSONP服务端返回的核心就一行echo $_GET[callback] . ( . json_encode($data) . );但这里面有安全风险如果callback参数没有做白名单校验攻击者可以传入任意脚本内容造成XSS。所以回到360的笔试风格它大概率会在JSONP题目的选项中留一个类似“直接返回$_GET[callback]拼接不做过滤”的错误选项。正确做法是对callback参数做正则校验只允许字母、数字、下划线和点号。3. 真题类型还原与答题思路拆解3.1 基础语法类真题从输出结果反推机制下面我列举几道典型的客观题都是当年真实笔试或同源模拟题里反复出现过的类型。先看一个变量比较的经典题。题干给出以下代码要求判断输出$a 0; var_dump($a false); var_dump($a false); var_dump(0 abc);逐行分析第一个$a false字符串0会被转换为布尔值PHP中只有0这一个非空字符串会被视为false所以比较结果为true。第二个$a false一个是字符串类型一个是布尔类型严格比较直接返回false。第三个0 abcPHP 8以前字符串abc会被转换成数字0然后比较0 0结果为true。但在PHP 8之后字符串与数字比较的规则变了abc不再被转换为0这个比较结果会变成false。这就是为什么面试题有时会加上“PHP 5/PHP 7环境下”的限制条件。再来看数组函数题。以下哪个选项会修改原始数组元素的值A.array_map()B.array_walk()C.array_filter()D.array_reduce()答案是B。array_walk()的回调接收数组的值默认是传值但如果回调函数参数声明为引用则会修改原数组。这个细节让array_walk()和其他几个纯函数式的方法产生了本质区别。运算符相关的题也常见。例如$i 0; echo $i $i; // 输出什么很多人想当然认为输出0或1实际要看PHP版本和求值顺序。经典结论是在PHP 7及更早版本中这行代码的结果通常是1。因为第一个$i在自增前取值0然后$i变为1第二个$i在自增前取值1然后$i变为2最终相加得1。这类题考察的是“先取值后自增”的语义不是简单的数学运算。老实说实际开发中没人会这么写但笔试就是喜欢考这种边界情况体现了对语言机制的理解。3.2 数据库与缓存类真题场景化分析是关键数据库题很少考纯概念基本都放在场景里。比如某支付系统需要保证用户余额扣减和流水记录同时成功或同时失败关于事务的说法正确的是A. MySQL默认隔离级别下不会出现脏读。B. 使用PDO时beginTransaction之后必须手动commit。C. 将autocommit设为0后所有SQL都会自动提交。D. 一个事务内查询到其他事务未提交的数据属于幻读。正确答案是A和B。MySQL默认的REPEATABLE READ隔离级别可以避免脏读所以A正确。PDO的beginTransaction开启事务后确实需要手动调用commit来提交B正确。autocommit设为0后恰恰相反所有SQL都需要显式提交C错误。D描述的现象叫脏读而不是幻读幻读是同一个事务内两次查询返回了不同的行集D错误。缓存题也喜欢结合场景。比如用Redis实现一个排行榜每个用户的分数需要实时更新并且能够按分数从高到低获取前10名。最合适的数据结构是A. StringB. ListC. HashD. ZSet答案是D。ZSet有序集合的每个成员都有一个scoreRedis可以通过ZREVRANGE按分数倒序获取排名天然适合排行榜场景。String适合存简单值List适合队列Hash适合存储对象的多个字段但都不适合排序取区间。3.3 网络与安全类真题答题时要多留一个心眼网络题直接看题目用户登录后浏览器关闭再打开Session ID没有变化。以下最可能的原因是A. 服务端重启导致Session丢失B. Session过期时间被设置为0C. 浏览器将Session ID持久化到了Cookie中D. PHP的session.use_cookies设为0正确答案是C。PHP默认的Session Cookie是会话级Cookie关闭浏览器就会失效。如果关闭再打开Session ID没变说明Cookie设置了较长的过期时间被持久化了。实际开发中如果要保持登录状态通常会在登录后单独设置一个记住我Cookie而不是直接拉长Session Cookie的过期时间。安全题是360笔试的重头戏考点集中在SQL注入、XSS、CSRF、文件包含和反序列化。SQL注入的常见考法以下哪段代码能有效防御SQL注入A.mysql_real_escape_string($_POST[name])后拼接SQLB. 使用PDO预处理并绑定参数C. 使用addslashes过滤输入D. 把单引号替换为空字符串正确答案是B。A和C都是转义方案但转义存在编码绕过的风险而且mysql_real_escape_string依赖数据库连接设置的字符集用不好照样被绕。D的做法更危险可以直接把攻击输入中的单引号过滤掉但同时会破坏正常数据比如用户名字就叫“O‘Brien”过滤后就错了。真正推荐的做法是参数化查询让SQL结构与参数分离。文件包含与伪协议是另一个热点。PHP支持的流封装协议里有php://filter、php://input、data://等。在文件包含场景中如果用户能控制包含的文件名攻击者可以构造php://filter/convert.base64-encode/resourceindex.php来读取源码或通过data://协议直接执行代码。这种考点常出现在CTF题里比如热词里的“[极客大挑战 2019]php”就是这一类。防御思路就是对包含的文件名做严格白名单校验禁用allow_url_include不要直接用用户输入拼接文件路径。反序列化也是安全高频题。PHP反序列化unserialize()时如果对象存在__wakeup或__destruct魔术方法这些方法会自动执行。攻击者可以精心构造一个恶意对象在魔术方法里触发危险操作。防御办法是永远不要反序列化不可信数据实在要反序列化用allowed_classes限制允许的类列表$data unserialize($userInput, [allowed_classes false]);4. 答题策略与备赛经验从做题到面试的全链路准备4.1 时间分配与做题顺序先把稳的拿到手客观题笔试时间紧、题量大最忌讳在一道题上死磕。我的建议是拿到卷子后先花两分钟扫一遍所有题目把一眼就会的题先做了再集中攻克有卡壳的题。这里有个潜规则单选题的难度通常呈波浪式分布开头和结尾偏易中间夹着几道压轴题。如果你在中间某道题卡了5分钟果断先跳过去后面说不定有送分题等着你。时间分配可以参考这个节奏总时长120分钟单选题控制在60到70分钟内多选题预留25到30分钟最后留20分钟检查。为什么多选题更难因为多选、漏选、错选都不得分而且不同平台对“漏选”的处理规则不同有些平台多选漏选得一半分有些一分不得。做题前先确认规则再决定自己是保守还是激进。4.2 不确定的题怎么处理多选题的保守策略如果你遇到一道多选题能完全确定两个选项是对的第三个选项拿不准怎么办分两种情况如果平台是“漏选得一半分”保守起见就只选确定的两个如果平台是“多选漏选都得零分”那只能尽量回忆知识点把最可能错误的选项排掉。我的经验是大厂的平台多数是“错选不得分漏选得部分分”所以保守策略往往能多拿几分。单选题的排除法需要练出条件反射。比如看到选项里出现“一定”“必然”“所有情况”这类绝对化表述基本都是错的看到“通常”“推荐”“大多数情况下”这类相对化表述往往是正确答案。这是个概率经验用在完全不会的题目上能显著提升猜中率。4.3 客观题背后的面试逻辑笔试答错不是结束这里想多说一句笔试答错不代表面试就没机会了但面试官一定会追着你做错的题再问一轮。我当年参加面试时面试官就问了一道我笔试做错的数组函数题让我现场重新分析并写出演示代码。所以笔试结束后一定要把自己做错的题整理成错题本这是最宝贵的面试预测材料。360的面试风格偏向连环追问。比如笔试里考了PDO预处理面试官会接着问“预处理的预编译缓存会不会导致SQL计划陈旧”“在MySQL里怎么查看预处理语句”“模拟预处理和本地预处理的区别是什么”。这些都是从笔试题目延伸出来的你要提前准备好。5. 常见问题与踩坑实录5.1 知识点背了但做不对问题出在“理解”而非“记忆”很多读者反馈刷题时看到题目觉得眼熟但一做就错。我复盘后发现这些问题几乎都出在“记住结论但没理解原理”上。比如很多人背了“0是唯一等于false的非空字符串”但不清楚它是怎么转换来的。当你理解了PHP的布尔转换规则就不会再被不同类型的比较题绊倒。另一个典型例子是数组内部指针。PHP数组自带一个内部指针current()取当前元素、next()下移、reset()回到开头。很多人在foreach之后直接使用current()发现结果不是预期值因为foreach处理数组时会在结束时让内部指针指向数组结尾。这种细节属于“不上手试错就永远记不住”的知识点我建议你用PHP命令行跑一遍php -r $arr [1,2,3]; foreach ($arr as $v) {} echo current($arr);输出结果是false而不是1。看到实际结果记忆会比死记硬背深刻得多。5.2 框架题要不要死记源码理解关键流程比背代码更重要ThinkPHP 3.2.3这类框架题目如果你去买源码逐行精读效率和收益都太低。更合理的策略是掌握三条主线请求生命周期、路由解析流程、ORM调用链。画图理解比背代码有效比如把入口文件到响应返回的每个环节列出来标注每个环节负责什么、哪些扩展点会在对应环节被调用。面试官问框架原理时最想听到的是你能说清楚“框架为什么这样设计”和“如果让你实现一个简化版框架入口文件你会怎么写”而不是复述源码。所以准备框架题时可以自己尝试写一个最小化的MVC框架不追求功能完整但要求路由、控制器、视图、数据库层能串起来。写完之后你会对网上那些成熟的框架有更深刻的理解// 最小MVC入口文件示意 require Router.php; require Controller.php; $router new Router(); $controllerName $router-getController(); $actionName $router-getAction(); $controller new $controllerName(); $controller-$actionName();这段代码当然不能用在生产环境但它帮助你理解一个核心事实框架的入口本质上就是一个“请求分发器”所有复杂功能都是围绕这个分发器扩展出来的。5.3 安全题被忽略的“送命题”别等面试官来教你很多PHP开发者日常写业务代码觉得安全离自己很远所以笔试里的安全题全凭感觉选。这恰恰是360这类公司最看重的能力。我建议你至少掌握五类最常见的Web漏洞原理和防御方案能写出来才算过关SQL注入使用预处理和参数绑定避免拼接SQLXSS输出时进行HTML转义输入时校验类型和长度CSRF使用Token、SameSite Cookie、校验Referer文件包含对包含文件名做白名单校验关闭危险协议反序列化不反序列化不可信数据限制allowed_classes还要了解一些PHP特性带来的风险比如extract()函数如果使用不当可能被攻击者通过GET参数覆盖变量造成变量覆盖漏洞。这类知识不在教科书里但在真实渗透测试中非常常见。你可以刷一些CTF题目来加深印象像热词中提到的“[极客大挑战 2019]php”就是通过文件包含加伪协议读取源码的典型题目。做这类题不是为了参加比赛而是为了建立对漏洞利用手法的直觉。5.4 一套高效的刷题复盘方法刷题不是目的把知识点转化成自己的能力才是。我习惯用的是“三遍复盘法”。第一遍做题并记录答案不管对错都写下自己的分析过程。第二遍对照解析逐题研究重点看官方解析里提到的“为什么”不只看结果。第三遍把错题和拿不准的题按知识点打标签定期回顾直到能不看解析独立讲清题目思路为止。举例来说如果你在“数组函数”标签下积累了5道错题说明这个知识点是你的薄弱点需要针对性补课。这时候可以搜索一下相关文章和实战案例把这些函数放在真实场景里再看一遍。热词里提到的“PHP语言经典程序100题”“PHP数组函数总结”这类资料可以作为补充练习但不要只看标题收藏要真正动手写。我自己当年准备这份题集时把每个考点的核心点都整理成了卡片正面写知识点名称背面写“一句话结论 代码示例 常见坑”。考前只看卡片的正面能背出背面内容就算过关。这个方法看起来土但对付客观题特别有效因为客观题考的就是快速识别和判断而卡片训练的就是这种条件反射。最后再分享一个小技巧刷题时最好在真实的在线笔试环境里模拟掐表、不许中途查资料、一次性做完。很多人裸考时才发现自己对时间的感知完全不准前面太磨蹭后面多选题根本没时间细想。模拟考试多练几次到了考场心态会稳很多。这份2018年的笔试合集虽然是几年前的题目但PHP的基础考点到现在依然适用只不过框架和版本有了一些变化。你在参考时重点关注答题思路和背后的原理而不是死记当年的标准答案。把基础打牢无论笔试题怎么变你都能从容应对。
返回列表