一个好的程序员需要相当程度的逻辑思维能力,要成为一个优秀的程序员,逻辑思维能力是关键,写程序也是对该能力的一种锻炼。
最近在职场论坛上看到这样一个帖子:程序员面试华为,面试官出了这样一个面试题,网友:题目太难了。这是怎么回事呢?这是一道怎样的面试题呢?
该员工说自己上次去华为面试,其中有个面试官给自己出了一道算术题,题目是这样的:第一行是1+4=5;第二行是2+5=12;第三行是3+6=21;最后要求算出第4行8+11等于多少?
这位员工说自己算了很久还是算错了,也因此被淘汰了,于是把这道算术题拿出来,希望看看大家怎么算的?
有网友说答案是40,但是立马被其他人否定了,连规律都没有搞清楚,你这个候选人肯定是不合格的。还有网友说这有很多种算法,只要你能够重新定义运算法则就行了,比如说答案是40或者是96。因为根据前面3个条件,最后那个应该是跳了4个,应该平滑过渡才行,所以答案是96。
还有网友说这个面试官水平也不行,难道他不知道世界上除了加减乘除,还有很多其它的符号可以用吗?只要能够自圆其说就可以了,没必要按照面试官的思路去做题。最后有网友说是97,前面是1到8,后面是4到11,对应相加的话,得出的规律就是每个数加上基数,以此类推,等到8+11的时候就是97了。
总结:
近年来,大家会发现职场面试的考题的难度可以说是越来越难,也越来越刁钻。对于这些刁钻的考题,笔者的建议就是我们职场人也不能墨守成规,只是去看一些过去的理论体系是不行的,是不能适应当前的面试的。要与时俱进,跟随新知识的潮流,这样才能从众多面试者中脱颖而出,取得较好的面试成绩。
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
一、java知识部分
现在面试对很多原理基础都特别注重,然而有很多人对一些核心原理理解的不够透彻,特别是对 Java 的一些核心基础知识点掌握的不够,例如 JVM、常用的算法和数据结构等。正所谓万丈高楼平地起,只有把基础掌握的牢固,才能走的更远,面对不断更新的技术才能快速掌握,同时在面试、工作中也更能脱颖而出!下面展示下这些必须掌握的Java知识部分,内容很多,都是一些重点知识!!!
1.Java基础:
2.Java集合:
3.多线程并发:
4.java虚拟机(JVM):
JVM 是初级Java 程序员成长路上的一道必经之路,学习JVM之前,只需要知道代码编译成 Class,虚拟机加载 Class 运行就可以了,学习 JVM 之后,可以深入理解代码从编译到加载的过程、内存中对象的创建与垃圾回收、日常开发中快速定位性能问题等,当然也是面试不可缺少的加分项。
5、数据结构与算法篇
哪些数据结构(线,链,堆,栈,队列)及其在 Java 里面哪里有用到。8 大算法(时间复杂度,空间复杂度,内存,CPU 的影响)及其应用的地方。KMP 查找算法,二分查找,递归算法(写法,内存的影响)。数、图及其应用的地方。hash 表,及其实际工作中哪里应用。
二、数据库部分
推荐阅读:《高性能MySQL》 《MySQL技术内幕:InnoDB存储引擎(第2版)》
三、开源框架部分
Spring 作为一个轻量级的 Java 开发框架,将面向接口的编程思想贯穿整个 Java 系统应用,因此在 Java 面试中常被提。
四、分布式高并发架构部分
这部分是关于分布式架构知识部分,包括Redis,Zookeeper,数据库性能优化,负载均衡等!
五、微服务知识