博主太痛苦了,没有任何资源,一我的奋战着(可能别人家的孩子都有矿吧,嘤嘤嘤),对java面试也没有经验,对面试毫无经验,因此少吃了一餐饭,省下的钱买了份资料,我把它分享出来, 目的是想给和我同样没有任何资源,同时想在互联网混口饭吃的底层人员一些帮助。前端
话很少说,下面是正文java
我是一名在 IT 行业闯荡了 8 年的程序员,从最初刚毕业时的迷茫到找到一份工做的喜悦,从一个小白慢慢成长为一个行业老兵,从一个初创型的公司到一个几千人的大型互联网公司,从初级程序员到架构师、技术经理,回顾这 8 年来,也有许多可圈可点的地方。程序员
最近几年公司的大小招聘,社招、校招都有参与,面试过许多大牛,也遇到过不少职场小白。有 10 年 工做经验的,也有刚刚毕业来面外包的、担任技术一面的面试官,深知技术面试之重要,来面试的不乏一轮游的,看着有些同窗基础浮夸、作着重复的项目也没有任何总结沉淀,自我介绍彻底不知道在说啥等等诸如此类的现状,这也让我很是苦恼,面试也很累的,一坐就大半天,聊十几二十我的,若是你还在东拉西扯不知所云,抑或是对面试官问的问题答非所问,基本在面试官内心已经给你 pass 掉了,之因此面试还在持续,只是由于职业素养罢了,为了避免让面试者感受太挫败,毕竟大老远的跑来求职都不容易,可是心里里却已经没有聊下去的欲望了。想一想本身也是从那个层次一步步走上来的,也经历了许多坎坷,以为有必要把个人面试经验跟你们分享一下,但愿能帮助你们找到一份满意的工做。web
面试须要有的放矢、机会是留给有准备的人。我相信通过你的努力,必定会有满意的收获。我挑出来面试官常问的知识点给你们有的放矢地强化,有助于快速提升,哪怕是临时抱佛脚也能跟面试官搭上话。面试
适宜阅读人群:算法
准备面试的初(中)级 Java 程序员或者面试官
文章分为八个部分,从 Java 基础、Java 核心、Java 进阶、Java 框架、分布式中间件、MySQL、JVM 到如何准备技术面试。先帮读者梳理知识点,这是咱们的硬实力,打铁还需自身硬;而后咱们还要有准备的去打好面试这场仗,不管是技术一面、二面 仍是 HR 面试,都要认真准备,把本身的软实力也充分发挥出来,毕竟不是每一个面试官都能一眼看透你的价值,你须要把发光点主动地表现出来。sql
下面开始进入主题。数据库
1. 面向对象的特性有哪些?apache
封装、继承、多态。编程
还有一个抽象,问三个就说上面三个,问四个就再补一个抽象
2. Java 中 Override 和 Overload 有什么区别?
不能缩小父类方法的访问权限
,且只能比父类抛出更少的异常
;被覆盖的方法不能为 private
,不然在其子类中只是新定义了一个方法,并无对其进行覆盖。同一个类中
能够有多个名称相同的方法,但这些方法的参数类型、个数、顺序至少有一个不相同。追问:什么状况下方法不能被重写?
方法被定义为 final
的时候不能被重写。
3. 抽象类和接口有什么区别?
抽象类:
abstract
修饰;new
关键字来实例化对象;能够不包含抽象方法
,抽象类中能够有具体的方法;
接口:
interface
修饰;均为抽象方法
;追问:什么状况下选择接口,什么状况下选择抽象类?
当要建立不带任何方法定义和成员变量的基类,应该选择接口;当有方法定义和成员变量的时候,应该选择抽象类。
4. JRE、JDK、JVM 有什么区别?
JRE
: Java 运行环境,为 Java 的运行提供了所需环境。JDK
: Java 开发工具包,提供了 Java 的开发环境和运行环境,JDK 包含 - JRE 还有 Java 编译器、Java 调试和分析工具等。JVM
是 Java 虚拟机,负责将 Java 字节码转换为机器码,正是 Java 可以跨平台的缘由。它还提供了内存管理
、垃圾回收
和安全机制
等。5. 值传递和引用传递有什么区别?
按值的拷贝传递
,传递的是值的拷贝,也就是说传递后就互不相关了。6. JDK 中经常使用的包有哪些?
lang
:这个是系统的基础类;io
:这里面是全部输入输出有关的类,好比文件操做等;nio
:为了完善 io 包中的功能,提升 io 包中性能而写的一个新包;net
:这里面是与网络有关的类;util
:这个是系统辅助类,特别是集合类;sql
:这个是数据库操做的类。7. 访问修饰符 public、protected、 default、private 的区别?
类的成员不写访问修饰符默认为default
,默认对于同一个包的其余类至关于公开(public),对于不是同一个包的其余类至关于私有(private)。
受保护(protected)对子类至关于公开,对于不是同一个包没有父子关系的类至关于私有。
Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符能够是以上四种。
8. 数据基础类型有哪些?
基础类型有 8 种:byte、boolean、char、short、int、float、long、double,注意 String 不属于基础类型, 属于对象。
9. final 有什么用?
用于修饰类、属性和方法;凡是引用 final 关键字的地方皆不可修改!
10. 经常使用的集合类有哪些?
最经常使用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小
的列表,比较适合构建、存储和操做任何类型对象
的元素列表。 List 适用于按数值索引
访问元素的情形。Map 提供了一个更通用
的元素存储方法。Map 集合类用于存储元素对(称做” 键” 和” 值”),其中每一个键映射到一个值。
11. HashMap 和 Hashtable 有什么区别?
HashMap 运行 key 和 value 为 null
,而 Hashtable 不容许。Hashtable 是线程安全
的,而 HashMap 是非线程安全
的。
12. HashMap 的实现原理是什么?
HashMap 基于 Hash 算法
实现的,咱们经过 put(key,value) 存储,get(key) 来获取。当传入 key 时,HashMap 会根据 key. hashCode()
计算出 hash 值
,存储时,若是出现 hash 值相同的 key,此时有两种状况,若是 key 相同,则覆盖原始值;若是 key 不一样,即出现冲突,则将当前的 key-value 放入链表中。获取时,直接找到 hash 值对应的下标,在进一步判断 key 是否相同,从而找到对应值。
13. ConcurrentHashMap 的实现原理是什么?
ConcurrentHashMap 是 Java1.5
中引用的一个线程安全
的支持高并发
的 HashMap 集合类。该类包含两个静态内部类 HashEntry
和 Segment
,前者用来封装映射表的键值对
,后者用来充当锁的角色
。Segment 采用了很是精妙的“分段锁”策略
,每一个 Segment 对应一个 HashEntry 数组,当对 HashEntry 数组的数据进行修改时,必须首先得到对应的 Segment 锁。
14. ArrayList 和 LinkedList 的区别是什么?
数组
,LinkedList 的实现是基于双向链表
;15. 如何实现 Array 和 List 之间的转换?
Arrays. asList(array)
;toArray()
方法。16. 在 Queue 中 poll() 和 remove() 有什么区别?
二者都是返回第一个元素,并在队列中删除返回的对象。不一样的是若是没有元素 poll()
会返回 null
,而 remove() 会直接抛出异常
。
17. 哪些集合类是线程安全的?
Vector、Hashtable 都是线程安全
的,而 HashMap 是非线程安全
的,不过 Java. util. concurrent 并发包中,ConcurrentHashMap 是线程安全
的。
18. 什么是 Java 反射?
在 Java 运行时
环境中,对于任意一个类
,可以知道
这个类有哪些属性和方法
,对于任意一个对象
,可以调用
它的任意一个方法
。
19. Java 怎么实现动态代理?
Java 中,经常使用的动态代理实现方式有两种,一种是利用 JDK 反射机制生成代理
,另一种是使用 CGLIB 代理
。JDK 代理必需要提供接口
,而 CGLIB 则不须要,能够直接代理类
,是基于继承当前类的子类实现的。
20. 进程和线程有什么区别?
重点在系统调度和单独的单位
,也就是说进程是能够独 立运行的一段程序
。CPU 调度和分派的基本单位
,他是比进程更小的能独立运行的基本单位。二者关系:一个线程只能属于一个进程,而一个进程能够有多个线程,但至少有一个线程,资源分配给进程,同一进程的全部线程共享该进程的全部资源。
追问:GC(垃圾回收)知道吗?
垃圾回收线程是特殊的守护线程
,守护线程是运行在后台
的一种特殊进程。它独立
于控制终端而且周期性
地执行某种任务或等待处理某些发生的事件。
21. 建立线程有哪几种方式?
建立线程有三种方式:
Thread
类重写 run
方法;Runnable
接口;Callable
接口。22. 什么是多线程,多线程的优劣?
多线程:多线程是指程序中包含多个执行流
,即在一个程序中能够同时运行多个不一样的线程来执行不一样的任务。
多线程的好处:
能够提升 CPU 的利用率
。在多线程程序中,一个线程必须等待的时候,CPU 能够运行其它的线程而不是等待,这样就大大提升了程序的效率。也就是说容许单个程序建立多个并行执行的线程来完成各自的任务。
多线程的劣势:
线程也是程序,因此线程须要占用内存,线程越多占用内存也越多; 多线程须要协调和管理,因此须要 CPU 时间跟踪线程; 线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题。
建立线程池的方式有多种,这里你只须要答 ThreadPoolExecutor 便可。
ThreadPoolExecutor() 是最原始的线程池建立,也是阿里巴巴 Java 开发手册中明确规范的建立线程池的方式。
24. 线程池的经常使用参数有了解吗?
ThreadPoolExecutor 包含如下七个参数:
前两个参数能够这么理解,若是运行的线程少于 corePoolSize,Executor 则能够不排队直接添加新的线程;若是大于等于 corePoolSize,则将请求加入队列,若是没法加入,则建立新线程;若是超出 maxinumPoolSize,任务被拒绝。
25. 怎么保证线程安全?
26. synchronized 和 Lock 有什么区别?
27. 什么是死锁?
死锁是指两个或两个以上的进程在执行过程当中,因为竞争资源或者因为彼此通讯而形成的一种阻塞的现象。
追问:怎么避免?
28. ThreadLocal 是什么?有哪些使用场景?
当使用 ThreadLocal 维护变量时,ThreadLocal 为每一个使用该变量的线程提供独立的变量副本,因此每个线程均可以独立地改变本身的副本,而不会影响其它线程所对应的副本。
ThreadLocal 的经典使用场景是 session 管理(不一样的线程对应不一样的 session)和数据库连接(为每一个线程建立不一样的连接)。
29. 你了解哪些设计模式?
30. 简单工厂模式和抽象工厂模式有什么区别?
31. Spring 框架的优势有哪些?
32. 什么是 Spring AOP?
即面向切面编程,经过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。它将业务逻辑的各个部分进行隔离,使开发人员在编写业务逻辑时能够专心于核心业务,从而提升了开发效率。主要体如今事务处理、日志管理、权限控制、异常处理等方面。
33. 什么是 Spring IoC?
即 inverse of control(控制反转),是 Spring 的核心,是一种建立对象的思想。将建立对象的权力交给 Spring 容器,其实就是让 Spring 容器帮你建立对象,而你不须要在 Java 代码中 new 对象了。
34. Spring 经常使用的注入方式有哪些?
35. Spring 自动装配 bean 有哪些方式?
Spring 配置文件中 节点的 autowire 参数能够控制 bean 自动装配的方式:
36. @Autowired 是作什么用?
@Autowired 是一个注释,它能够对类成员变量、方法及构造函数进行标注,让 Spring 完成 bean 自动装配的工做。
37. Spring Boot 有什么优点?
Spring Boot 继承了 Spring 优势,使得开发更加方便快捷。
38. Spring Boot 配置文件有哪几种类型?
配置文件有 . properties
格式和 . yml
格式,它们主要的区别是书法风格不一样。
39. Spring Cloud 是什么?
Spring Cloud 是基于 Spring Boot 的一整套实现微服务的框架。它它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。
40. Spring Cloud 的核心组件有哪些?
固然,除了以上还有不少,就不一一列举了。
41. MyBatis 和 Hibernate 的区别有哪些?
42. ZooKeeper 是什么?
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
43. ZooKeeper 集群选主和同步的机制是什么?
ZooKeeper 的核心是原子广播,这个机制保证了各个 Server 之间的同步,实现这个机制的协议叫作 ZAB 协议。ZAB 协议有两种模式:分别是恢复模式和广播模式。
44. 集群中有 3 台服务器,宕机 1 台,这个时候 ZooKeeper 还可使用吗?
能够,根据选票过半的选举原则,所以集群节点最好为奇数;单数服务器只要没超过一半的宕机就能够继续使用;因此 ZooKeeper 集群的容灾数量 =(集群总节点数 - 1)/2;也就是说 3 台服务器集群的话,最多容许 1 台宕机。
45. Redis 是什么?都有哪些使用场景?
Redis 是一个使用 C 语言
开发的高效缓存内存数据库
。
Redis 使用场景:
46. 你使用过 Redis 的哪些经常使用功能?
47. Redis 支持的数据类型有哪些?
Redis 支持的数据类型:string、list、hash、set、zset(sorted set)。
48. Redis 和 Memcache 有什么区别?
49. 什么是缓存穿透?怎么解决?
50. 缓存和数据库之间怎么保证双写一致性?
51. Redis 持久化有几种方式?
52. Redis 怎么实现分布式锁?
Redis 分布式锁通常使用 setnx(set if not exists)指令,只容许被一个程序占有,占用成功了就能够继续执行,失败了就只能放弃或稍后重试,使用完调用 del 释放锁。
伪代码示例(这里只是简述,实际应用没有那么简单的,感兴趣的同窗能够详细查一下资料):
53. 消息队列的使用场景有哪些?
54. 消息队列包含哪些核心角色?
55. JMS 和消息队列的关系?
JMS(Java Messaging Service)是 Java 平台上有关面向消息中间件的技术规范,经过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为 Java 消息服务。它是 Java EE 中定义的一组标准 API,它自身并非一个消息服务系统。
56. ActiveMQ 的基本使用?
Linux 下安装 ActiveMQ:下载 activemq 压缩包(apache-activemq-5.13.0-bin.tar.gz)解压,执行 apache-activemq-5.13.0/bin/activemq,检测 activemq 是否安装成功:netstat -an | grep 61616
。
ActiveMQ 前端控制台端口默认 8161 端口,在 jetty.xml 中的 jettyPort 对应的 port 能够改为你想要设置的端口。部署完毕后能够打开 http://localhost:8161/admin/ 进入控制台页面,帐号密码默认 admin。
在 conf/activemq.xml 中 61616 的默认端口来自 transportConnector 对应的 URI 地址,若是想要修改或新增端口,也能够在这个地方新增或修改。
ActiveMQ 启动命令为 activemq start,中止命令为 activemq stop
,查看运行状态命令为 activemq status
。
57. ActiveMQ 消息传输模式
点对点模式
在点对点模型中,一个消费者对应一个生产者,生产者将消息放入队列中,当消费者请求队列中的消息时,消息会从队列中取出,并投递给消费者,消息投递后会从队列中删除,这样就能够保证消息只能投递给一个接收者。并且消息发送客户端与接收客户端没有时间上的依赖,发送客户端能够在任什么时候刻发送信息到队列,而不须要知道接收客户端是否是在运行。
发布/订阅模式
一个生产者产生消息发送后,能够被多个消费者进行接收。消息会发送给一个主题,与队列相似,多个接收者均可以监听一个主题。但与队列不一样的是,消息主题的全部订阅者都会接收到此消息。而且必须建立一个订阅者以后,才能消费发布者的消息,并且为了消费消息,订阅者必须保持运行的状态。
58. ActiveMQ 的消息持久化策略
消息持久性对于可靠消息传递来讲是一种比较好的方法,即时发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息中心重启后仍然能够将消息发送出去。消息持久性的原理很简单,就是在发送消息出去后,消息中心首先将消息存储在本地文件、内存或者远程数据库,而后把消息发送给接受者,发送成功后再把消息从存储中删除,失败则继续尝试。
ActiveMQ 的消息持久化的默认机制是 KahaDB,还有 JDBC 不过通常不用,KahaDB 可用于任何场景, 提升了性能和恢复能力。消息存储使用一个事务日志和仅仅用一个索引文件来存储它全部的地址。KahaDB 是一个专门针对消息持久化的解决方案, 它对典型的消息使用模式进行了优化。在 Kaha 中,数据被追加到 data logs 中。当再也不须要 log 文件中的数据的时候, log 文件会被丢弃。
配置方式:在 conf/activemq.xml 文件中
59. 数据库的三范式是什么?
列的原子性
,即列不可以再分红其余几列;60. ACID 分别指的是什么?
61. SQL 的内链接、左链接、右链接有什么区别?
内链接是把匹配的关联字段显示出来;左链接会读取左边数据表的所有数据,即便右边数据表没有对应数据。右链接会读取右边数据表的所有数据,即便左边数据表没有对应数据。
62. MySQL 索引是怎么实现的?
MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。提取句子主干,就能够获得索引的本质:索引是一种数据结构,而这些数据结构会以某种方式指向数据,从而实现高效查找数据。目前主流的数据库引擎的索引都是 B+ 树实现的,索引的性能也是更好的。
63. 怎么验证 MySQL 的索引是否知足需求?
须要根据查询需求来判断配置哪一种索引,肯定索引后,能够经过 explain 命令来查看执行计划,确认是否知足需求。explain 语法:explain select * from table
。
64. 说一下数据库的乐观锁和悲观锁?
65. MySQL 问题排查都有哪些手段?
netstat -ntp |grep 46888
),经过线程号排查是哪一个应用(ps -ef | grep pid
);66. 如何作 MySQL 的性能优化?
select *
,列出查询字段;67. 你了解类加载过程吗?
加载
:经过一个类的全限定名来获取其定义的二进制字节流,将这个字节流所表明的的静态存储结构转化为方法区的运行时数据结构,在堆中生成一个表明这个类的 Class 对象,做为方法区中这些数据的访问入口;验证
:主要做用就是确保被加载的类的正确性,主要包含文件格式的验证,元数据验证,字节码验证和符号引用验证;准备
:主要为类变量分配内存并设置初始值;解析
:主要是虚拟机将常量池中的符号引用转化为直接引用的过程。符号引用指的是一个标示,而直接引用是指向内存中的地址;初始化
:主要为类的静态变量赋予正确的初始值,JVM 负责对类进行初始化,主要对类变量进行初始化。68. 什么是双亲委派模型?
当收到加载一个类的请求时,子类加载器并不会立刻去加载,而是依次去请求父类加载器加载,一直往上请求到最高类加载器:启动类加载器。当启动类加载器加载不了的时候,依次往下让子类加载器进行加载。当达到最底下的时候,若是仍是加载不到该类,就会出现 ClassNotFound 的异常。
69. 你熟悉 JVM 哪些垃圾回收算法?
标记—清除算法
:标记无用对象,而后进行清除回收。缺点:会带来另外一个新的问题:内存碎片化。复制算法
:首先仍是先标记处待回收内存和不用回收的内存,而后将不用回收的内存复制到新的内存区域,这样旧的内存区域就能够所有回收,而新的内存区域则是连续的,解决了内存碎片化的问题,可是缺点是会损失掉部分系统内存,通常是新生代使用。标记—整理算法
:首先仍是“标记”,标记事后,将不用回收的内存对象压缩到内存一端,此时便可直接清除边界处的内存,通常是老年代使用。70. 你熟悉 JVM 哪些垃圾回收器?
这里简述几个经典经常使用的便可:
Serial
:单线程串行垃圾回收器。ParNew
:多线程的串行垃圾回收器。Parallel
和 ParNew
相似是多线程的,但 Parallel 是吞吐量优先的收集器,能够牺牲等待时间换取系统的吞吐量。CMS
:一种以得到最短回收停顿时间为目标的收集器,采用标记—清除算法。71. 你熟悉 JVM 哪些调优参数?
-Xms2g
堆初始值 2G-Xmx2g
堆最大可用内存 2G-XX:NewRatio=4
新生代: 老年代内存比例 = 1:4-XX:PrintGC
触发 GC 时打印日志-XX:PrintGCDetails
触发 GC 时打印详细日志-XX:UseSerialGC
使用 Serial 串行回收器XX+UseParNewGC
使用 ParNew + Serial Old 垃圾回收器组合1. 明确技术方向,匹配岗位要求
学历、工做年限、技能、项目经历、软实力。找准定位,是要作技术仍是偏管理。划重点:作技术就不要提管理。面试官很是讨厌技术不扎实的人,明明是面试技术,却老是提管理。这里不是说不须要管理能力,而是要分清楚主次,只有你的技术使面试官满意了,管理能力才能为你加分。
2. 盘点我的价值,找亮点
《天道》中的一句话,博主分享给你们,不要太把本身当人,由于在 HR 们的眼中,咱们都是商品,你要把本身的价值以最直观的方式体现出来,不要扯其余没用的。明确了本身有什么价值,你须要问本身一个问题:以行业标准衡量,你以为你是哪一个领域的专家?由于你只有是某个领域或者方向的专家,性价比高,HR 们才会以为这笔买卖很划算。不要自惭形秽,你之因此平庸,是由于你没有深挖本身的亮点,在简历最后一栏自我评价里,把亮点一一列举出来,若是你实在是找不到,那总作过项目吧,能吃苦吧,善与人相处吧,逐条写出来。
划重点:项目经验多不表明能力强,要总结而不是叙述,千万不要逐个项目长篇叙述业务模块,面试官对你作过的项目业务逻辑根本不感兴趣,你须要把项目中你用过的技术列举出来,最好是只写最近的或者你最有成就感的项目,把你了解的技术栈全都写上。
3. 内推和猎头,机会大不少
选择公司也很重要,是互联网公司仍是传统企业,传统企业相对重视业务,而互联网公司比较重视技术。公司主要是作什么产品、用的什么技术 。若是你的资历不够,学历双非,但技术很强,想去大厂也不是没机会。划重点:找内推、找猎头推荐要比本身投简历要机会大得多。
4. 知己知彼百战不殆
薪资、福利、平台优点、晋升机制、工做环境、人际关系、工做强度、社会地位等等,把这些全都列出来,作个表格,排好优先级。如今业界对于跳槽涨薪的幅度大都控制在 30% 之内,了解一下你的城市、这个企业这个技术方向的平均薪酬来参考。划重点:知己知彼才好跟 HR 谈薪。
5. 一份简历闯天下?不可取
不一样的企业、岗位须要的技能不一样,你须要制定有针对性的简历。
划重点:
6. 练习自我介绍
直接划重点:
最后,拿得出手的经典项目准备一个,刷刷面试题,还要准备一些非技术类问题,好比这个必问的经典问题:你为何离职?关于这个问题,说内心话,不必那么执拗。不要回答“上个公司加班太多,工做生活不能兼顾诸如此类 “,这样回答虽然没毛病,可是却不是标准答案,试问哪一个互联网公司不加班?若是有,谁不想去?这个问题标准答案是:个人我的职业规划的缘由,我须要一个更大的平台来施展,不断地见识、学习和成长。
最后还要准备一两个问面试官的问题,标准答案:贵公司当前使用的主流技术栈有哪些?若是我顺利经过面试,我将会加入哪一个团队?我将来的工做方向是什么?千万别扯别的,诸如大家公司薪酬大概是多少?(保密的不知道吗),大家加班多很少?(废话)。管住好奇心,这些问题等你过了技术面试,留着 HR 来回答你。
你们看看,面试前都要准备那么多,若是是资深工程师岗位或者技术专家岗位,你可能起码要准备 3 个月,即使是初/中级工程师,面试前也要认真准备 1 个月,这样你的面试成功率才会高不少。
写了不少,你们发现我很爱说“划重点”、“标准答案”、“千万别扯” 之类,由于真的就是这样。仿佛回到高三时,语文老师教我答题,他的口头禅是:不要乱写、不要你觉得、按标准答案去“套”。很是感谢我当时的语文老师(语文没有拖个人后腿,偷笑),以理科状元的优异成绩考入华科。因此,我认为求职并非一场对等的谈判,而是一场考试(固然若是你是 BAT 系的大神,另当别论,这里不纠结哈),高考有考霸,那么面试呢天然也会有面霸,都有套路,这取决于你对套路的掌握程度。
其实还有不少话,担忧思路一旦打开,喷涌而出,刹不住车了(大多也是在倒苦水,面试官也很无奈,哈哈,把面试者在面试过程当中的不按套路出牌的地方梳理总结一下,给后来的人以指引,不至于掉坑)。