首先,声明经验不主要是为面试官准备的,因为无论是面试官还是面试官,我们总是可以从别人那里学到一些东西,学习方式,可以提高知识是目的,个人反对找工作,只在找工作时努力学习,做技术需要积累,需要实践,是一个漫长而孤独的过程,如果你没有耐心,劝君早日悬崖勒马,不要做技术,做其他行业也能赚钱,还能养家糊口。
首先,让我们谈谈面试官的心态:作为公司的负责人和合作伙伴,你必须配得上公司给你的工资。毕竟,作为一个企业,你仍然付出了很多。因此,在寻找下一个合作伙伴时,你必须考虑为公司找到合适的候选人,为并肩奋斗的队友找到一个好的队友,杜绝坑队友,因此,作为一名即将离开的面试官,我们也应该以良好的态度寻找合适的人。面试别人的时候,我主要关注以下几点(这只是我个人最看重的三点,别人会怎么想,也许有自己的看法):
一、计算机网络基础部分
TCP报头格式UDP报头格式TCP/UDP区别(不仅是宏观上的,最好能根据各自的机制讲解清楚)HTTP状态码(最好结合使用场景,比如在缓存命中时使用哪个)HTTP协议(一些报头字段的作用,如cace-control、keep-alive)OSI协议、TCP/IP协议以及每层对应的协议。SESSION机制、cookie机制TCP三次握手、四次挥手(这个问题真的要回答吐了,不过真的是面试官最喜欢问的,建议每天手撸一遍,而且不只是每次请求的过程,各种FIN_WAIT、TIME_WAIT状态也要掌握)。打开网页到页面显示之间的过程(涵盖了各个方面,DNS解析过程,Nginx请求转发、连接建立和保持过程、浏览器内容渲染过程,考虑的越详细越好)。http和https区别,https在请求时额外的过程,https是如何保证数据安全的IP地址子网划分POST和GET区别DNS解析过程深入部分 13. TCP如何保证数据的可靠传输的(这个问题可以引申出很多子问题,拥塞控制慢开始、拥塞避免、快重传、滑动窗口协议、停止等待协议、超时重传机制,最好都能掌握) 14. 地址解析协议ARP 15. 交换机和路由器的区别
二、数据库基础部分
事务四大特性(ACID)数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景数据库的优化(从sql语句优化和索引两个部分回答)索引有B+索引和hash索引,各自的区别B+索引数据结构,和B树的区别索引的分类(主键索引、唯一索引),最左前缀原则,哪些情况索引会失效聚集索引和非聚集索引区别。有哪些锁(乐观锁悲观锁),select时怎么加排它锁关系型数据库和非关系型数据库区别了解nosql数据库三范式,根据某个场景设计数据表(可以通过手绘ER图)数据库的主从复制使用explain优化sql和索引long_query怎么解决内连接、外连接、交叉连接、笛卡儿积等深入
MVCC机制根据具体场景,说明版本控制机制死锁怎么解决varchar和char的使用场景。mysql并发情况下怎么解决(通过事务、隔离级别、锁)Redis
redis数据结构有哪些redis队列应用场景redis和Memcached(支持数据持久化)分布式使用场景(储存session等)发布/订阅使用场景三、操作系统内存的页面置换算法进程调度算法进程间通信方式进程线程区别进程之间的通信父子进程、孤儿进程fork进程时的操作, 这个部分我回答的都不好,只能是死记硬背,建议基础好的同学多看看操作系统这部分,能大大加分。四、算法基础
剑指OFFER的各个题目是最常见的,即使不是原题也是题目的变体,因为面试不像笔试,一般不会出特别困难的题目,所以剑指OFFER上小而精的题目就非常适合。建议手刷一遍。PHP的同学可以参考专栏剑指OFFER二叉树相关(层次遍历、求深度、求两个节点距离、翻转二叉树、前中后序遍历)链表相关(插入节点、链表逆置、使用链表进行大数字的加减,双向链表实现队列、寻找链表中的环)堆(大量数据中寻找最大N个数字几乎每次都会问,还有堆在插入时进行的调整)排序(八大排序,各自的时间复杂度、排序算法的稳定性。快排几乎每次都问)二分查找(一般会深入,如寻找数组总和为K的两个数字)两个栈实现队列。图(深度广度优先遍历、单源最短路径、最小生成树)动态规划问题。
深入
红黑树性质
分治法和动态规划的区别计算时间复杂度二叉树和哈希表查找的时间复杂度栈和链表是面试算法的时候经常用到的工具,多考虑怎么用数据结构的性质解决,因为面试不像笔试,对基础数据结构关注的比较多一些,一般问题也比较简单。然后取模也是常用的工具(比如有一次问怎么让100个进程按规定的权重被调用,就可以用取模的方式)。 面试官一般会先出简单的问题,然后深入地问下去,最好是根据他的思路走,因为能听懂他的提示也是需要考察的能力。
LINUX硬链接和软连接区别kill用法,某个进程杀不掉的原因(进入内核态,忽略kill信号)linux用过的命令系统管理命令(如查看内存使用、网络情况)管道的使用 |grep的使用,一定要掌握,每次都会问在文件中查找shell脚本find命令awk使用语言部分(PHP)数组操作函数字符串操作函数(数组和字符串的函数是最常问的,非常多,一定不要记混了)指针和引用区别堆和栈的区别== ===区别PHP的垃圾回收机制zval结构防sql注入跨域问题长链接和长轮询面向对象、设计模式
接口和抽象类区别单继承construct的调用顺序(子类父类之间)设计模式(工厂模式、策略模式、单例模式、装饰模式比较常见)OOP特性,通过哪些机制实现的重写和重载区别静态类静态方法根据某个需求设计一个类(主要考虑类之间的继承关系和属性的权限设置)项目项目中遇到的困难(提前想好,并且把实现或者优化方法说清楚)系统的量级、pv、uv等应对高并发的解决办法(分布式)在项目中主要负责了哪些工作。nginx的负载均衡分布式缓存的一致性,服务器如何扩容(哈希环)总之要把写在简历上的项目部分熟悉一遍,技术栈、项目功能、难点都要考虑好。
来源http://blog.csdn.net/acingdreamer/article/details/78479476 (谢谢博主)
另一个强烈推荐的面试提纲 https://blog.csdn.net/acingdreamer/article/details/78479476
MySQL 数据库性能优化之缓存参数优 https://www.2cto.com/database/201605/506272.htmlMySQL 数据库性能优化之表结构 https://www.2cto.com/database/201605/506274.htmlMySQL 数据库性能优化之索引优化 https://www.2cto.com/database/201605/506270.htmlMySQL 数据库性能优化之SQL优化 https://www.2cto.com/database/201605/506249.html MySQL数据库性能优化之存储引擎选择 https://www.2cto.com/database/201605/506253.html MySQL数据库性能优化之硬件优化 http://blog.csdn.net/bemavery/article/details/46241533
PHP 线程,进程,并发 https://blog.mimvp.com/article/15484.html
PHP并发IO编程之路(深度长文)https://www.imooc.com/article/8449多线程编程 - PHP 实现 https://cloud.tencent.com/developer/article/1012783深入研究PHP及Zend Engine的线程安全模型 http://blog.codinglabs.org/articles/zend-thread-safety.htmlphp实现多进程、多线程 https://blog.csdn.net/ZHANG_TIMI/article/details/78342722
- php数组操作之键名比较与差集、交集赋值的方法
- php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
- PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
- php 归并排序 数组交集
- PHP数组交集的优化代码分析
- PHP数组对比函数,存在交集则返回真,否则返回假
- PHP 数组排序方法总结 推荐收藏
- PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
- php无限极分类递归排序实现方法
- PHP 冒泡排序算法的实现代码
- php二维数组排序详解
- PHP实现bitmap位图排序与求交集的方法
http://www.csdn.net/article/2014-07-24/2820837 Nginx、LVS及HAProxy负载均衡软件的优缺点详解http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解
Nginx的配置与部署研究,Upstream负载均衡模块 http://www.linuxidc.com/Linux/2013-04/82526p2.htm
CentOS 6.2实战部署Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用Nginx搭建WEB服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3下Nginx性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3下配置Nginx加载ngx_pagespeed模块 http://www.linuxidc.com/Linux/2013-09/89657.htm
CentOS 6.4安装配置Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm
Nginx安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm
Nginx日志过滤 使用ngx_log_if不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
http://www.jb51.net/article/107414.htm (nginx日志实现访问异常报警)