前一篇文章讲述了我在三月份毫无准备就去面试的后果,一开始心态真的爆炸,可是又不服气,一想到每次回来后家人朋友问我面试结果的期待脸,越以为必须付出的行动来证实本身了。php
面经传送门:一个1年工做经验的PHP程序员是如何被面试官虐的?html
下面是我花费两个星期作的准备,主要分三部分:mysql
下面的文章和网站连接我都会注明出处,若是有问题请联系我,我会及时修改或撤销nginx
反思:为何好多知识看事后不能记住,面试一紧张更加想不起?一方面本身没有深刻学习,另外一方面复习过程杂乱,和写代码一个道理,若是你的业务逻辑和其余乱七八糟的都放在控制器上,代码一多你要调用某个方法可能就会让你抓狂,因此通常采起controller和server分层,同理,咱们最好提早作好计划,分种类,分层次来学习。git
复习前若是很迷茫,能够网上Google一下面试知识点,看到的无非都是操做系统,计算机网络,数据结构,mysql,设计模式,Linux,Redis,再者根据你所学语言方面的知识和简历,例如我求职PHP,简历上有写Larvel框架,那就再加PHP基础,框架Laravel,服务器nginx。程序员
若是你是科班出身,那应该对操做系统不陌生,至少在高校里面是学过这门课程的。但估计不少人像我同样,后悔没去好好学这门课,或者工做上用不上就抛弃它了(PHP更是如此),我要说的是操做系统很重要,就以我面试了几家公司来讲,基本若是你答出操做系统相关知识点基本都是加分的。github
附加帮助我整理这些知识的网站和博客文章:web
并发技术·笔试面试知识整理redis
这里推荐有精力的朋友能够看下《Linux高性能服务器编程》,粗略看下8,9,10,13,14章,以及《深刻理解计算机系统》的第1章和第12章,我就是结合这两本书,记住并理解简单的知识点,后续我还要花时间去深刻阅读。
计算机网络能够说是大多数程序员须要学习的大课程,特别是PHPer这些web打交道的程序员。固然,计算机网络太底层的东西很枯燥很难懂,我只针对一些比较常见,比较基础的知识面来学习。
附加帮助我整理这些知识的网站和博客文章:
[小土刀的面试刷题笔记——网络](<wdxtub.com/interview/1…)
复习完这些基础的知识后,试着要去了解稍微底层一点的东西,由于不少面试官喜欢由浅入深地问,若是能答出一两点基本都是加分的
推荐一篇很好的文章,仔细读完会有很大的收获:
不少人在大学里面都学过这门课程,也是不少程序员的启蒙课程,天然很重要,(大学惟一一次挂科就是它了。。。)
从事PHP工做的朋友应该都用不上它,因此这也是一个很容易被忽视的基础知识点,天然有不少大公司面试的时候很注重这方面的基础,特别是应届毕业生。我复习这方面的知识是从新翻开我大学的课本,把其中比较重要的东西手写几遍。
我不久前面试过一家要我手写链表,结果早就忘了,没写出来
冒泡排序能够了解下如何优化改进,有些面试官会问,若是答不出他会提示你怎么作,考察你的思考能力
关于数据结构的参考资料基本Google一下就有不少(顺便说下,21世纪程序员仍是少用某度),大学的课程书是最好的,通常大学的数据结构都是面向学生的,仍是很基础,很好理解的。
说实话,我以为绝大多数程序员都是在CURD,学那么多东西很大方面也是为了辅助最后的curd。因此数据库知识的重要性毋庸置疑,后面我打算买本《高性能MySQL》来提高本身这方面的能力。
nginx和php-fpm应该算是PHP程序员接触比较多,可是可能没有去深刻了解过,有些面试官喜欢结合nginx,php-fpm和操做系统进程方面的知识来考察。
能够Google了解下php-fpm和nginx各自的进程管理模式,参考文章:Nginx内部有使用多线程吗?
面试过程可能会问到网站负载低,访问慢怎么排查,参考:论坛偶尔出现负载低可是访问很慢排查思路
工做项目不大,用到redis的地方并很少,因此一直也没去学习redis,可是从面试状况看来,被问到redis的几率仍是很大的,毕竟这款基于内存的数据库功能强大,市场占用率很高。
因为我本身是一直用Laravel框架开发的,简历里面的项目也多处标明Larvel,因此这里就介绍Larvel相关的知识,你对哪一个框架熟悉就去作相应的复习,基本Google和手册都有。
看一我的的代码水平,能够从是否灵活使用设计模式看出来的。写代码也是一门艺术,好的代码低耦合,易扩展,设计模式的理解和使用也决定了你的代码水平。这里推荐一本《大话设计模式》,目前我只看了一点点,对于我这样的菜鸟以为还不错,后面需抽点时间好好看看。
有一次面试官问我简单工厂模式是否是符合六大原则之一开闭原则?我答不出来,随便选了个符合。。。实际简单工厂是不符合开闭原则的,这就涉及到你开闭原则的理解。
真正要读懂PHP内核的人应该不多,大多数人都没时间和精力去研究底层,毕竟PHP一直以开发效率高著称,只要底层有人写好给广大程序员用就行了。确实是这样,可是我记得有个面试过个人大佬跟我说,不少东西不要只会用,要多想一想为何能够这样用,PHP语言我以为也是同样,虽然如今能力有限,但我能够提早把一些比较基础,容易理解的底层知识学习一下,这不也是一种自我提高?面试的时候你也能够拿出来炫一下,说错也不要紧,至少你展现出你的好学,你的认知层面。
参考文章:
面试都是拿着你的简从来问问题的,你的简历内容会直接影响面试内容的走向,因此简历写完还要作响应的复习。
个人简历有涉及rabbitMQ,elasticsearch等知识,我就对其进行简单的复习。
另外很重要的一点:提早想好怎么描述你作过的项目,其中遇到什么问题,怎么解决,尽可能把你好的一面展现出来,这些均可以提早写下了的,好记性不如烂笔头,下面第二部分会说到。
复习的内容实在是太多了,单单写上一部份内容都快把个人键盘打烂,手写断了。虽然有了十全的计划,但如何高效率去记住上面那么多东西是一个大问题,看看我是怎么作的。
总之,真想要离职,找一份好工做,必须对本身狠一点,找到心仪的工做再好好去放松几天。其实有很多人一直在埋怨大环境很差,确实是,但有何用,想为本身菜,本身不努力找一个借口?王小波说的好:人的一切痛苦,本质上都是对本身无能的愤怒。固然运气也很重要,保持乐观,别轻易放弃。
简历不用多说,就是很重要,怎么写?其实我也是参考一篇文章的:我本觉得大家会写简历
归纳一下:
基本的,用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 )
最好这样:
PHP : 熟悉PHP语法 , 熟悉PHP面向对象 , 能够根据业务逻辑结合合适的设计模式 . 熟悉PHP SPL标准库 , 对PHP的一些高级用法有所心得体验 , 诸如pcntl多进程模块 , socket模块 . 对SWOOLE全部涉猎 , 有一些本身的积累和经验 . 对于底层 , ZendVM如何如何 。 Redis : 熟悉Redis经常使用数据结构的使用 , 可结合业务场景选择合适的数据结构 . 熟悉Redis集群 , 对集群实现方案原理有必定掌握 , 对于市面经常使用的集中集群方案的优缺点比较了解 . 对于底层 , 对Redis SET等底层数据结构的实现有所掌握。
必定要写项目亮点和难点
大多数人都是这么写的 : 负责用户登陆注册模块 , 后台管理 , 多角色权限控制 , 负责广告业务模块的管理和筛查(太普通,太泛了)
面试并不简单,不要过轻敌,作好准备,打好基础是关键。毫无准备就去投简历面试大可能是浪费时间,甚至浪费进入好公司的机会。仍是那句话程序员应该脚踏实地,不要眼高手低,用实际行动证实本身。
我是即将入职广州一家游戏公司PHP开发岗位的程序员,2018年毕业,毕业到如今确实收获了很多,也让我看清本身,须要恶补的知识还有不少不少。欢迎你们关注个人我的博客zgxxx.github.io/,比较简陋,仍是但愿能和万千大神交流技术问题,一块儿