目前从事开发工作也有5年时间了,从刚开始大学毕业来到帝都,开启了自己的开发之旅,呆过的都是互联网公司,一二线的大公司(百度、美团、探探、滴滴等)都有去面试过,也顺利拿到了3个offer,最终我还是选择了百度的offer。
刚开始一般先做自我介绍,在这一块我就不多讲,很多人都分享过,你们都可以去参考!我在这边总结下PHP后端专业技能,这样可能是大部分程序员都关心的问题,我所说的大部分你目前可能还不会,但是当你掌握后,薪资水平会有一个质的飞跃!
面试总结
1.PHP7的新特性有哪些
2.数据库设计为什么进行分表,分库
3.Mysql实现底层btree机制
4.web开发方面会遇到哪些缓存,分别如何优化
5.如何用关联数组实现栈
6.数据库进行主从分离主要的原理
7.php的内存回收机制
8.nginx负载均衡有哪些,如果其中一台服务器挂掉,报警机制如何实现
9.缓存命中率需要怎么提高,原理是什么
10.如何修改php/zend内核,使其满足程序员的编程需要,方便操作
一般公司都会分为业务架构跟技术架构两部分,业务架构一般不会深入的去询问,但是要面试官能够清楚的理解你说的东西,一般面试官都会顺着问,你是如何根据这些业务去设计技术架构的。
例如:redis,会问哪些场景用,解决了什么问题,数据量有多少,用的过程出现过哪些问题,怎么去定位解决的,还有它的原理等,诸如此类的问题;不管哪个知识点,能达到能答到面试官无法在这个问题上问下去了,或者能举一反三说出其他技术点基本上就过了。
我会根据上面的问题去讲解PHPer需要的一些技术;后面再顺带一些底层设计方面的知识点。
1
Nginx/ Redis/Memcached
了解复杂的Nginx配置;包括多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超 时等相关配置和性能影响;且在大部分中型系统里面一定会涉及到缓存处理,可以做一些复杂的数据结构的应用,zset来做排行榜排序操作/事务处理用来保证原子性在秒杀类场景应用之类的使用操作。
2
php的内核组成模块和运行原理
php内核,zend引擎,php扩展层,这是PHP的三个模块
内核: 用于处理请求,文件流,错误处理等相关处理
zend引擎: 将源文件转换成机器语言(实际上是字节码opCode),然后再zend虚拟机上运行(这个跟java虚拟机是类似的)
扩展层:它是一组函数、类库和流, php使用它们来执行一些特定的操作, 比如需要使用mysql扩展(扩展文件实体是 : PhpRoot/ext/php_mysql.dll)
3
大型分布式网站架构
百度这种大团队里有很多小团队,到小团队之后,做的业务都不相同,如果想立足成为一线互联网公司中的万能选手,最主流的分布式架构中有很多知识都是必须要去了解与学习的,以下为分布式架构案例:
以上采用七层逻辑架构,高并发,高可用,海量数据,没有分布式的架构知识肯定是玩不转的,当你真正开始学习的时候难免不知道从哪入手,学习时频繁踩坑,导致效率低下影响继续学习的信心,最终浪费大量时间。
上述说到的部分面试题及更多的架构面试专题我总结出了互联网公司Java程序员面试中所遇到的大多数面试问题整理了答案和一些架构视频资料分享给有需要的朋友(包括Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis等架构技术资料),希望能节省您在网上找资料的时间及帮助到您面试前的复习好在年后的招聘季找到一份满意的工作!
资料领取方式:加企鹅群867924282,进群既领取资料!
有疑问加站长微信联系(非本文作者)