下面是我花费两个星期做的准备,主要分三部分:
- 有计划——计划好每天要复习的知识模块(内容较多)
- 高效率——从整体到细节,着重把知识点“手写”到自己的电脑记录本
- 优简历——展示你的项目亮点,难点 有计划:
1. 反思:为什么好多知识看过后不能记住,面试一紧张更加想不起?一方面自己没有深入学习,另一方面复习过程杂乱,和写代码一个道理,如果你的业务逻辑和其他乱七八糟的都放在控制器上,代码一多你要调用某个方法可能就会让你抓狂,所以一般采取controller和server分层,同理,我们最好提前做好计划,分种类,分层次来学习
2.如果你是科班出身,那应该对操作系统不陌生,至少在高校里面是学过这门课程的。但估计很多人像我一样,后悔没去好好学这门课,或者工作上用不上就抛弃它了(PHP更是如此),我要说的是操作系统很重要,就以我面试了几家公司来说,基本如果你答出操作系统相关知识点基本都是加分的。
3. 进程和线程的概念,以及两者的区别
.什么是上下文切换
.多进程和多线程各自的优势(可以Google一下有关php-fpm和nginx进程)
.进程通信方式
.进程基本状态
.抢占式调度和非抢占式调度
. 进程线程同步,死锁
. 理解协程
4.计算机网络可以说是大多数程序员需要学习的大课程,特别是PHPer这些web打交道的程序员。当然,计算机网络太底层的东西很枯燥很难懂,我只针对一些比较常见,比较基础的知识面来学习。
5. 数据结构 很多人在大学里面都学过这门课程,也是很多程序员的启蒙课程,自然很重要,(大学唯一一次挂科就是它了。。。)
从事PHP工作的朋友应该都用不上它,所以这也是一个很容易被忽视的基础知识点,自然有很多大公司面试的时候很注重这方面的基础,特别是应届毕业生。我复习这方面的知识是重新翻开我大学的课本,把其中比较重要的东西手写几遍。
学习思路这是很重要的部分
6.数据库mysql
说实话,我觉得绝大多数程序员都是在CURD,学那么多东西很大方面也是为了辅助最后的curd。所以数据库知识的重要性毋庸置疑,后面我打算买本《高性能MySQL》来提升自己这方面的能力。
7. nginx和PHP-fpm
nginx和php-fpm应该算是PHP程序员接触比较多,但是可能没有去深入了解过,有些面试官喜欢结合nginx,php-fpm和操作系统进程方面的知识来考察。
8.redis
工作项目不大,用到redis的地方并不多,所以一直也没去学习redis,但是从面试情况看来,被问到redis的概率还是很大的,毕竟这款基于内存的数据库功能强大,市场占用率很高。
9.Laravel
由于我自己是一直用Laravel框架开发的,简历里面的项目也多处标明Larvel,所以这里就介绍Larvel相关的知识,你对哪个框架熟悉就去做相应的复习,基本Google和手册都有。
10.设计模式
看一个人的代码水平,可以从是否灵活使用设计模式看出来的。写代码也是一门艺术,好的代码低耦合,易扩展,设计模式的理解和使用也决定了你的代码水平。这里推荐一本《大话设计模式》,目前我只看了一点点,对于我这样的菜鸟觉得还不错,后面需抽点时间好好看看。
11. HP内核基础知识
真正要读懂PHP内核的人应该很少,大多数人都没时间和精力去研究底层,毕竟PHP一直以开发效率高著称,只要底层有人写好给广大程序员用就好了。确实是这样,但是我记得有个面试过我的大佬跟我说,很多东西不要只会用,要多想想为什么可以这样用,PHP语言我觉得也是一样,虽然现在能力有限,但我可以提前把一些比较基础,容易理解的底层知识学习一下,这不也是一种自我提升?面试的时候你也可以拿出来炫一下,说错也没关系,至少你展示出你的好学,你的认知层面。 高效率:
12.根据你的简历内容做复习
面试都是拿着你的简历来问问题的,你的简历内容会直接影响面试内容的走向,所以简历写完还要做响应的复习。
我的简历有涉及rabbitMQ,elasticsearch等知识,我就对其进行简单的复习。
另外很重要的一点:提前想好怎么描述你做过的项目,其中遇到什么问题,怎么解决,尽量把你好的一面展示出来,这些都可以提前写下了的,好记性不如烂笔头,下面第二部分会说到。
13. 复习的内容实在是太多了,单单写上一部分内容都快把我的键盘打烂,手写断了。虽然有了十全的计划,但如何高效率去记住上面那么多东西是一个大问题,看看我是怎么做的。
例如第一天复习操作系统的知识,我是早上Google了一下有关操作系统的面试知识点,然后打开几个标签页,选取内容比较齐全的。所谓“好记性不如烂笔头”,没有烂笔头,只有烂键盘,所以我选择把这些知识点一一整理到自己的电脑上,自己平时有写博客,用markdown比较多(推荐Typora),所以每天就用一个md文件把知识整理下来,基本都是手打的,很少复制黏贴。这样做,一方面让自己印象深刻,另一方面锻炼自己摘取核心内容,描述能力,这也是我能写下这么多内容的原因。
每天晚上计划好明天的复习内容,可以选择睡前回顾今天学习的知识,也可以在第二天早上回顾一遍
最好选择一个安静的地方,能让你认真学习的环境,我由于提交了离职申请需要一个月才能走,交接项目也很快,所以每天都在公司有计划的复习(远离手机)
总之,真想要离职,找一份好工作,必须对自己狠一点,找到心仪的工作再好好去放松几天。其实有不少人一直在埋怨大环境不好,确实是,但有何用,想为自己菜,自己不努力找一个借口?王小波说的好:人的一切痛苦,本质上都是对自己无能的愤怒。当然运气也很重要,保持乐观,别轻易放弃。
优简历:
14.基本的,用PDF格式,个人信息写完整,别写精通
技能亮点,围绕 熟悉 , 有所 , 掌握 , 了解 , 有一定心得 等
不要这样:熟悉PHP , 熟悉YiiLavarel框架 ( 复制粘贴 , CURD , 就是干! )
熟悉Linux使用 , 可以搭建XXXX环境 ( 会敲cd , ls命令 , 会apt install nginx )
熟悉git或svn版本管理的使用 ( 会git push , 会git pull )
熟悉MySQL以及对数据库的优化 ( 会select update 和 delete , 会添加索引 )
熟悉Redis或Memcache的使用 ( 会set key , 会get key )
15.最好这样:
PHP : 熟悉PHP语法 , 熟悉PHP面向对象 , 可以根据业务逻辑结合合适的设计模式 . 熟悉PHP SPL标准库 , 对PHP的一些高级用法有所心得体验 , 诸如pcntl多进程模块 , socket模块 . 对SWOOLE所有涉猎 , 有一些自己的积累和经验 . 对于底层 , ZendVM如何如何 。
Redis : 熟悉Redis常用数据结构的使用 , 可结合业务场景选择合适的数据结构 . 熟悉Redis集群 , 对集群实现方案原理有一定掌握 , 对于市面常用的集中集群方案的优缺点比较了解 . 对于底层 , 对Redis SET等底层数据结构的实现有所掌握。
16.一定要写项目亮点和难点
大多数人都是这么写的 : 负责用户登录注册模块 , 后台管理 , 多角色权限控制 , 负责广告业务模块的管理和筛查(太普通,太泛了)
亮点 . 你觉得这个项目中哪一部分值得自豪或学到新东西了 . 比如项目中用到ECDH , 使用了MySQL中间件等等。
难点 . 你觉得这个项目哪一部分当时难了你几天 , 然后你通过自己努力解决了以及解决方案是什么。 不定期更新学习资料以及笔试面试题 点击加入该群