当前位置: 首页 > 后端技术 > PHP

如何"有计划,高效率,优简历"应对面试

时间:2023-03-29 23:24:37 PHP

如何应对“有计划、有效率、有优秀简历”的面试每次回来,家人朋友都会问我面试的预期结果,我觉得必须要用行动来证明自己。面签传送门:1年工作经验的PHP程序员是如何被面试官虐的?下面是我花了两周时间做的准备,主要分为三个部分:计划——计划每天要复习的知识模块(内容较多),高效——从整体到细节,专注于“手写”》知识点Yourowncomputerrecordbookexcellentresume-showyourprojecthighlights,如有疑问我会注明以下文章出处和网站链接。记不得了,更记不得面试紧张的时候了?一方面没有深入研究,另一方面复习过程比较乱,和写代码一样。如果你的业务逻辑等乱七八糟的东西都放在了controller上面,如果代码太多,你可能会调用某个方法,这可能会让你抓狂,所以controller和server一般都是分层的。同样,我们最好未雨绸缪,分类分级学习。复习前如果一头雾水,可以上网google一下面试知识点,看到的无非就是操作系统,计算机网络,数据结构,mysql,设计模式,Linux,Redis,根据自己对语言的了解你学过,你的简历,比如我应聘PHP,简历上写了Larvel框架,所以加上PHP基础,框架Laravel,服务器nginx。第一天:操作系统如果你是科班出身,对操作系统应该不陌生,至少在大学里学过这门课。但是估计很多人和我一样后悔没有学好这门课,或者工作不需要就放弃了(尤其是PHP)。我想说的是,操作系统很重要,所以面试了几家公司,基本上回答操作系统相关的知识点,基本都会加分。进程和线程的概念,以及两者的区别什么是上下文切换多进程和多线程的优点(关于php-fpm和nginx进程可以google一下)进程通信方式进程基本状态抢占式调度和非抢占式调度抢占式调度进程线程同步,死锁理解协程,另外还有帮助我整理这些知识的网站和博客文章:小兔岛的面试题笔记-操作系统并发技术·笔试面试知识整理这里推荐精力充沛的朋友阅读《Linux高性能服务器编程》,粗略看一下《深入理解计算机系统》的第8、9、10、13、14章和第1、12章。我只是结合这两本书来记住和理解简单的知识点。后续我会抽空深入阅读。第二天:计算机网络计算机网络可以说是大部分程序员都需要学习的一门大课,尤其是PHPer等和web打交道的程序员。当然,计算机网络底层的东西是非常枯燥难懂的。我只研究一些比较通用和基础的知识。计算机网络系统包括TCP/IP体系结构、五层协议体系结构TCP、UDP三次握手、四次握手(过程要熟悉,能描述清楚)TCP协议如何保证可靠传输(包括重传,流量控制,拥塞控制,定时器等知识点需要了解)辅助我梳理这些知识的网站和博客文章:小兔岛的面试题笔记-网络TCP协议·笔试面试知识复习完这些基础知识后,试试去了解一点底层的东西,因为很多面试官喜欢由浅入深地问问题。如果你能回答一两点,那基本上是加分项。推荐一篇好文章,细读会收获很多:TCP那些事(上)Day3:DataStructure很多人在大学里学过这门课,也是很多程序员的启蒙课。自然是非常重要的。(大学唯一挂科的就是它。。。)从事PHP工作的朋友最好不要用,所以这也是一个容易被忽视的基础知识点。自然很多大公司在面试的时候都会注意这方面的基础,尤其是应届毕业生。我通过重新打开我的大学教科书并多次手写其中更重要的内容来复习这些知识。前不久面试了一家公司,让我手写一个链表,但是我早就忘记了。队列、循环队列、栈、单链表等我都没有写出来,要理解,树和图最好手写几遍,把二叉树的知识复述一遍,比如前中后遍历;B树,B+树,红黑树,最好懂排序算法,冒泡排序一定要熟悉,另外几个常用的算法:简单选择排序,直接插入排序,快速排序也知道冒泡排序可以帮到你了解如何优化和改进。有的面试官会问,如果你不会回答,他会提示你怎么做,考验你的思维能力。Google里面有很多关于数据结构的参考资料(顺便说一下,21世纪了,程序员还是少用了一定的学位),大学的课本最好,一般大学的数据结构都是面向学生,这仍然是非常基础和容易理解的。Day4:数据库mysql说实话,我觉得绝大多数程序员都在CURD,学习这么多东西很大程度上是为了辅助最后的curd。因此,数据库知识的重要性是毋庸置疑的,我打算买这本书《高性能MySQL》来提高自己这方面的能力。基本CRUD操作存储引擎MyISAM和InnoDB了解索引数据结构,即B+树知识参考:InnoDB索引实现·MySQL索引背后的数据结构及算法原理·看云mysql语句优化,重点介绍索引优化,详解查看索引情况参考:Mysql索引优化事务四大特性隔离级别脏读、不可重复读、幻读理解共享锁、排它锁、死锁理解主从复制原理、分库分表第五天:nginx和PHP-fpmnginx应该算是PHP程序员接触php-fpm的比较多,但未必理解的很深。有些面试官喜欢结合nginx、php-fpm和操作系统进程知识来考察。日常使用的nginx配置语法,常用变量nginx常用参数优化参考:Nginx高并发优化nginx负载均衡、访问控制、防盗链、设置静态文件过期时间等php-fpm工作流程php-fpm进程管理(静态和动态)你可以谷歌了解php-fpm和nginx各自的进程管理模式。参考文章:Nginx内部是否使用多线程?面试过程中,你可能会问如何检查网站负载低,访问速度慢。参考:论坛偶尔负载低但是访问很慢。没学过redis,但是从面试情况来看,被问到redis的概率还是很高的。毕竟这种基于内存的数据库功能强大,市场占有率也很高。与memcached的区别五种基本数据结构及其各自的使用场景。最好结合自己的项目来描述持久化、RDB和AOF。参考:Redis的持久化和恢复,面试中经常被问到的,保持数据与mysql的一致参考:Redis和mysql的数据如何保持数据的一致性?Day7:Laravel由于本人一直在使用Laravel框架开发,简历中的项目也都标有Laravel,所以这里介绍一下Laravel相关的知识。如果对哪个框架比较熟悉,做相应的复习,基本上Google一下,就有手册。Laravel生命周期什么是服务容器、服务提供者、Facade依赖注入中间件、异常处理、ORM等手册中的知识Day8:Designpatterns一个人的代码水平可以从设计模式是否灵活运用上看出来。写代码也是一门艺术。好的代码是低耦合和易于扩展的。对设计模式的理解和运用也决定了你的代码水平。这里推荐一本书《大话设计模式》。到目前为止,我只读了一点点。对于我这种菜鸟来说,我觉得还不错。我需要花点时间稍后再读。六大原则,重点理解,最好结合自己的项目经验把几种设计模式描述清楚。常见的有单例、三大工厂、观察者、策略等。曾经有面试官问我简单工厂模式是否符合六大原则之一,开闭原则?我无法回答,所以我只选择了一个匹配的。..实际的简单工厂是不符合开闭原则的,这涉及到你对开闭原则的理解。Day9:PHP内核基础知识真正想了解PHP内核的人应该很少。大多数人没有时间和精力研究底层。毕竟PHP一直以开发效率高着称。就用它吧。确实是这样,但是我记得面试过我的一个老大跟我说,很多东西不光是用,更应该思考为什么可以这样用。我认为PHP语言也是如此。虽然我现在的能力有限,但是能提前学习一些基础的、通俗易懂的底层知识,不也是一种自我提升吗?在面试的时候,你也可以炫耀一下。错了不要紧,至少表现出你的学习热情和认知水平。PHP的生命周期和zend引擎变量存储结构复制并引用参考文章:深入理解PHP内核PHP内核解析Day10:根据你的简历内容进行复习面试都是在问你的简历,你的简历内容会直接影响面试内容的走向,所以写好简历后,需要做相应的审核。简历中有rabbitMQ、elasticsearch等相关知识,简单回顾一下。还有很重要的一点:提前想好如何描述自己做过的项目,遇到了什么问题,如何解决,尽量表现出自己好的一面。这些可以提前写下来。好记性不如烂笔头。下面第二部分会讲到。内容太多,无法高效复习。光是写一部分内容就差点把我的键盘砸烂,把我的字写坏了。虽然我有一个完整的计划,但是如何高效地记住上面这么多东西是个大问题。看看我是怎么做到的。比如第一天复习操作系统的知识点,我在谷歌了早上关于操作系统的面试知识点,然后打开了几个tab,选择了内容比较全的。所谓“好记性不如烂笔”,没有烂笔,只有烂键盘,所以我选择在电脑上一一整理这些知识点,平时写博客,和多用markdown(推荐Typora),所以每天就用一个md文件整理知识,基本都是手打,很少复制粘贴。这样一来,一方面打动自己,另一方面锻炼自己提炼核心内容并加以描述的能力,这也是我能写出这么多内容的原因。每晚计划明天的复习内容。你可以选择睡前复习今天学过的内容,也可以选择第二天早上复习。最好选择一个安静的地方,在那里你可以努力学习。我递交了离职申请一个月就可以离职,交接项目也很快,所以每天在公司都有计划的复习(远离手机)。总之,如果真想离职找个好工作,一定要对自己狠下功夫,等找到自己想要的工作再努力去放松几天。其实很多人一直在抱怨环境不好,的确如此,但是有什么用,想要自己做饭,不努力找借口?王小波说得好:人间一切苦难,本质上都是对自己无能的愤怒。当然运气也很重要,保持乐观,不要轻易放弃。优秀的简历不用多说,一份简历很重要。怎么写呢?其实我也参考了一篇文章:我以为你会写简历总结一下:基础,用PDF格式,个人资料齐全,不写精通技能亮点,注重熟悉,知识,掌握,理解,一定的经验不要这样等:熟悉PHP,熟悉YiiLavarel框架(复制粘贴,CURD,justdoit!)熟悉Linux使用,会搭建XXXX环境(会打cd,ls命令,会apt安装nginx)熟悉会git或svn版本管理(会gitpush,会gitpull)熟悉MySQL和数据库优化(会选择update和delete,会加索引)熟悉Redis或Memcache的使用(会setkey,会getkey)它最好这样做:PHP:熟悉PHP语法,熟悉PHP面向对象,能根据业务逻辑组合合适的设计模式。熟悉PHPSPL标准库,体验PHP的一些高级用法,如pcntl多进程模块、socket模块。都对SWOOLE有所涉猎,都有自己的一些积累和经验。对于底层,ZendVM怎么样。Redis:熟悉Redis常用数据结构的使用,能结合业务场景选择合适的数据结构。熟悉Redis集群,对集群实现方案的原理有一定把握,对市场上常用的集中式集群方案的优缺点有较深了解。对于底层,对于RedisSET等底层数据结构的Master实现。一定要写项目的亮点和难点。大部分人是这样写的:负责用户登录注册模块,后台管理,多角色权限控制,负责广告业务模块的管理和筛选(太普通,太笼统)亮点。您认为您对这个项目的哪一部分感到自豪或学到了新东西?比如项目中使用了ECDH,使用了MySQL中间件等。困难。项目的哪一部分你当时觉得难了你几天,后来你通过自己的努力解决了,解决的办法是什么。综上所述,面试并不容易。不要小看敌人。做好准备,打好基础是关键。没有准备就投简历去面试,多半是浪费时间,甚至是浪费进入好公司的机会。还是那句话,程序员要脚踏实地,不要狂妄自大,用实际行动证明自己。我是一名程序员,即将加入广州某游戏公司的PHP开发岗位。我是2018年毕业的,毕业后收获了很多。欢迎大家关注我的个人博客https://zgxxx.github.io/,比较简单,还是希望和万千大神交流技术问题,共同成长。