01.静态网页时代
张大胖V1.0 毕业了, 去一家公司面试。
“会做网站吗?”
“会,我会用Dreamweaver/FrontPage写HTML页面,不仅是文字,我还能在里边添加图片,JPEG,GIF的都行,比纯文字的漂亮多了。奥,不懂这些高深的技术名词啊, 没事,只要你给我提供素材,我就能把网页做出来,我还会申请虚拟空间做部署,用一个叫做cuteFTP的软件就行。”
“行,那你来吧,月薪3000。”
张大胖欣喜若狂 :哇,这么多钱,我要财了!
02.动态网页时代
张大胖V2.0 毕业了,去一个公司面试。
“用ASP写过网站吗?”
“写过啊,我用ASP写过在线的聊天室!用application对象来存储聊天记录,用session保存当前登录的用户信息。”
“聊天记录不保存到数据库吗?”
“没有,一般来说,参与聊天的人能看到过去一段时间的聊天记录就可以了,所以就直接放到内存中了,这样速度很快。”
“那大家都在说话,岂不就冲突了?”
“奥,ASP的那个application对象是可以加锁的。”
“用户端是浏览器,怎么实现刷新啊?”
“这个不难,加上一个refresh tag 就行, , 像这样每隔3秒就刷新了。”
......
“嗯,看来有实践经验,我们公司就缺你这样的人才,来吧,月薪5000。”
张大胖:“好多钱!再攒几年就可以买房了!”
03.21世纪初
张大胖V3.0 毕业了,去一家公司面试。
......
“讲讲MVC是怎么回事?”
“MVC是Model-View-Controller的简称,实现了Web网站各个模块的职责分离......”
“说说EJB的生命周期,如何管理事务的,在WebLogic中部署都需要哪些部署文件......”
“你都用过哪些设计模式啊,在白板上画个类图,详细地讲讲。”
“讲讲Java 集合类。”
“AJAX的原理是什么?jQuery都有哪些选择器?”
“数据库的事务是怎么回事?有哪些隔离级别?”
......
“好了,什么时候能上班?月薪8000。”
张大胖:“还行, 北京房价一平米五六千,还是有希望的。”
04.现在
张大胖V4.0 毕业了,去一家公司面试。
......
“JDK的源码看过没有, 先说说HashMap的实现原理吧!”
“JVM类加载的过程是什么?Java的内存模型是什么样的?JVM的垃圾回收算法有哪些?讲讲Java 锁的实现原理。”
“比较一下select , poll , epoll 的优缺点。”
“TCP和UDP有什么区别, 为什么TCP要三次握手,四次挥手?TCP如何控制阻塞?HTTP的短连接和长连接是什么意思?”
“Spring的AOP是怎么实现的?ASM是怎么操作字节码的?”
“volatile 是怎么回事?CAS呢?ABA问题怎么解决?”
“线程池是怎么回事?有哪些参数可以设置?”
“说说MySQL 的InnoDB索引的实现原理。如何有效地利用索引?MVCC是怎么回事?数据库的读写分离,表的垂直和水平拆分怎么做?缓存和数据库的一致性怎么处理?”
“讲解CAP理论, 最终一致性,BASE的原理。”
“用通俗的语言讲解一下Spring Cloud。”
......
张大胖被面得头晕眼花, 最后得到了一个消息:“你先回去吧,有消息会通知你的。”
05.20年以后
张大胖V5.0 毕业了,去一家公司面试。
“会写函数吗?”
“函数?当然会,我还会面向对象,设计模式,分布式架构,秒杀,分库分表,集群,负载均衡, 微服务,限流,降级,ServiceMesh,云原生,DevOps .....” 张大胖非常自信。
“打住打住,这些技术根本用不上,我问你会写函数吗?”
“为啥啊,我都熟练掌握处理三高(高并发、高性能、高可用)的技术了!”
“你说的这些技术已经烂大街了,在云端都是基础设施了,配置一下就Ok,根本不用你操心,现在公司都有自己的开发平台,把一切都封装好了,你只要把业务逻辑写到函数里就行。月薪3000,来不来?赶紧的,外边还有人排队呢!”
【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】