引子

从过完年回苏州,就开始找工作,差不多1个半星期的时间,最后和一家公司谈好。

我个人情况比较特殊,30多岁,毕业前面5-6年做软件,后来就自己创业做线上粉丝运营,最近一年,把现在公司主流用的的技术栈,中间件多熟悉了一下,也通过几个项目练习了一遍。同时自己对大数据分析比较刚兴趣,趁着自己自由时间比较多,所以又把hadoop整个离线分析框架(hdfs,yarm,hive,hbase,flume),以及storm在线流式分析框架都学习了一遍。

学是一方面,在找工作的过程中,还是要对面试中经常遇到的问题有一个整体的了解,也包括自己的职业规划,这个关系到你想向那些公司投简历。

今年的第一个面试就需要先去做题目,发现自己技术基础掌握的不是很好,也可能是时间长了,很多java基础的东西区分的不是很仔细,所以自己在牛客网上刷题,遇到一些不是很明白的,再去发散性的学习提升,后面有机会再去把我的这些错题总结出来。

还有很多想跟大家分享的,不过感觉自己的文笔没有我参考的这个博主【五月的仓颉】好,所以用他的大纲,我总结了一个思维导图,分享给大家。.
参考 面试感悟----一名3年工作经验的程序员应该具备的技能

面试感悟

java

易学难精

语言是职业生涯的一个赛道

职业规划

前3年积累工作经验

  • 比较纯粹的Coder的阶段
  • 团队协作
  • 如何使用项目管理工具
  • 代码如何测试
  • 如何在线上运行

5-10年 技术上独当一面

  • 从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物
  • 研究各种技术实现细节
  • 看了N多好书
  • 写一些博客
  • 在Github上分享技术

10年之后 担任关键职务

  • 对行业有着深入认识
  • 对技术有着深入认识
  • 能从零开始对一个产品进行分析的程序员
  • 担任的都是CTO、技术专家、首席架构师等最关键的职位

面试衡量的3方面

项目经验

  • 虽然大部分情况都是做产品的一个功能或一个模块,但是你有没有把整个系统架构或产品搞清楚,并能介绍清楚

    • 为什么做这个系统?
    • 这个系统的价值是什么?
    • 这个系统有哪些功能?
    • 优缺点有哪些?
    • 如果让你重新设计这个系统你会如何设计?
  • 总结

    • 明确你的项目到底是做什么的,有哪些功能
    • 明确你的项目的整体架构,清楚地指出从哪里调用到哪里、使用什么方式调用
    • 明确你的模块在整个项目中所处的位置及作用
    • 明确你的模块用到了哪些技术
    • 更好一些的可以再了解一下整个项目用到了哪些技术
  • 绕不开的问题

    • 谈一下你在项目中解决过的比较复杂的问题
    • 问题不是你解决的而是别人解决的,但是你把这个问题弄懂、搞透了,依然是你的经验

基本技术

  • 3-5年工作经验

    • 1 基本语法

      • static、final、transient等关键字的作用

      • volatile关键字的底层实现原理

      • foreach循环的原理

      • 对你技术的考量

        • 深度优先、广度次之为标准
    • 2 集合

      • List、Map、Set

        • 各种实现类的底层实现原理,实现类的优缺点
      • ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的实现原理

      • 掌握CopyOnWrite容器

      • Queue

      • ConcurrentHashMap的问题

        • 1 它的锁分段技术
        • 2 它的读是否要加锁,为什么
        • 3 它的迭代器是强一致性的迭代器还是弱一致性的迭代器
    • 3 设计模式

      • 重点研究常用的十来种

        • 1 你的项目中用到了哪些设计模式,如何使用
        • 2 知道常用设计模式的优缺点
        • 3 能画出常用设计模式的UML图
    • 4 多线程

      • 基本上不会再问你怎么实现多线程了

      • Thread和Runnable的区别和联系

      • 多次start一个线程会怎么样

      • 线程有哪些状态

      • 问题

        • 假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?

          • 分析:先多线程同步执行,需要有一个线程等待汇总
          • 可以通过发令枪,循环栅栏,阻塞队列,CompletableFuture异步回调
      • 线程池

        • 用的线程池有几种?
        • 这几种线程池之间有什么区别和联系?
        • 线程池的实现原理是怎么样的?
        • 实际一点的,会给你一些具体的场景,让你回答这种场景该使用什么样的线程池比较合适
      • 多线程同步、锁

        • synchronized和ReentrantLock的区别
        • synchronized锁普通方法和锁静态方法
        • 死锁的原理及排查方法等等
    • 5 IO

      • File IO

      • Socket IO

        • 阻塞/非阻塞的区别

        • 同步/异步的区别

        • 四种IO模型

          • 阻塞IO
          • 非阻塞IO
          • 多路复用IO
          • 异步IO
        • Socket IO如何和这四种模型相关联。

      • NIO的原理、NIO属于哪种IO模型、NIO的三大组成

        • NIO并不是严格意义上的非阻塞IO而应该属于多路复用IO
        • 知道NIO会阻塞在Selector的select方法上
      • Netty

        • 当前最好的NIO框架
    • 6 JDK源码

      • 看你平时是不是爱钻研了

      • String的hashCode()方法是怎么实现的

      • 1 List、Map、Set实现类的源代码

      • 2 ReentrantLock、AbstractQueuedSynchronizer(AQS)的源代码

      • AQS详解

        • 抽象的队列式的同步器

          • 同步类实现都依赖于它

            • 如常用的ReentrantLock/Semaphore/CountDownLatch
        • 维护了2个属性

          • 一个volatile int state(代表共享资源)

            • 访问方式

              • getState()

              • setState()

              • compareAndSetState()

                • CAS
          • 一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)

        • 对共享资源state,有两种资源共享方式

          • 独占方式 Exclusive

            • 如 ReentrantLock

            • tryAcquire 尝试获取资源

              • 成功则返回true
              • 失败则返回false
          • 共享方式 Share

            • 如 Semaphore/CountDownLatch

            • tryAcquireShared(int) 尝试获取资源

              • 负数表示失败;
              • 0表示成功,但没有剩余可用资源;
              • 正数表示成功,且有剩余资源
          • AQS也支持自定义同步器同时实现独占和共享两种方式

            • 如ReentrantReadWriteLock
      • 3 AtomicInteger的实现原理

        • 主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的
      • 4 线程池的实现原理

      • 5 Object类中的方法以及每个方法的作用

    • 7 框架

      • 问你一下你们项目中使用的框架

      • 给你一些场景问你用框架怎么做

        • 举例

          • 在Spring初始化bean的时候做一些事情该怎么做
          • 想要在bean销毁的时候做一些事情该怎么做
          • MyBatis中$和#的区别
      • 问一些框架的实现原理

        • Spring AOP的实现原理
        • 难的:画一下Spring的Bean工厂实现的UML图
    • 8 数据库

      • union和union all的区别
      • left join
      • 几种索引及其区别
      • 数据库性能的优化
    • 9 数据结构和算法分析

      • 会比不会好而且在工作中绝对能派上用场

      • 数组、链表是基础

      • 栈和队列深入一些但也不难,树挺重要的

      • 比较重要的树AVL树、红黑树

      • 要知道什么是二叉查找树、什么是平衡树,AVL树和红黑树的区别

      • 你知道索引使用的是哪种数据结构实现吗?

      • 算法分析

        • 排序,查找

        • 分治法

        • 动态规划

        • Collections.sort方法使用的是哪种排序方法

          • TimSort的排序,增强型的归并排序法
    • 10 Java虚拟机

      • Java虚拟机的内存布局
      • GC算法及几种垃圾收集器
      • 类加载机制,也就是双亲委派模型
      • Java内存模型
      • happens-before规则
      • volatile关键字使用规则
      • 走向大牛的路上,不可不会
    • 11 Web方面的一些问题

      • 谈谈分布式Session的几种实现方式

      • Session和Cookie的区别和联系以及Session的实现原理

      • web.xml里面的内容是重点

        • Filter、Servlet、Listener 知根知底
      • get/post的区别

      • forward/重定向的区别

      • HTTPS的实现原理

      • SOA和RPC,面向服务体系

        • 大型分布式架构必备

个人潜力

  • HR面试

    • 1 简历中写的过去工作经历的离职原因
    • 2 当前公司薪资待遇
    • 3 期望能到怎样的一家公司
    • 4 个人未来的发展方向
  • 面试心态

    • 1 不紧不慢,平心静气

    • 2 条理清晰

    • 不要把面试当作面试,当做一次技术交流

      • 把面试的心态从我要找到一份工作转变为我要通过面试去发现不足、提升自己
    • 如果自己热衷于研究技术的朋友,真的要有自信

为什么java易学难精

  • 易学

    • Java语言的设计者帮助Java程序员做了这么多事情
  • 难精

    • 假如在应用运行过程中遇到了语法层面和应用层面之外的错误,应当如何处理?
    • 比如线上环境出现内存溢出怎么办?
    • GC时间过长怎么办?
    • IO长时间没反应怎么办?
    • 方法抛出莫名其妙的异常怎么办?
    • 这些问题需要大量的经历、大量的实践、大量对Java底层实现细节的研究

工作的心态

  • 建议看看这本书【软技能-代码之外的生存之道】

  • 把自己与公司的雇佣关系

    • 变为自己也是一个企业与公司是一种合作关系

      • 公司是自己的一个重要客户(贡献大部分收入)
      • 自己作为企业,那企业发展需要考虑哪些方面

30岁之后工作不好找,或者30岁之后就要转行?

  • 这个就像一个老中医一样,老中医一眼就看出这个人有什么问题,而新人需要查这个查那个,还不一定能准确定位

  • 对于一个新的容器

    • 老手一看就知道 这是不是新壶装老酒

      • 还是在技术上加入了哪些新的特性,解决了原来哪方面的问题
    • 新手

      • 新手去学,要一段时间,再去用,有没多少实际经验,不知道怎么配置调优

XMind - Trial Version

【面试感悟】java程序员职业规划 面试衡量的3方面(项目经验,基本技术,个人潜力)面试心态,工作心态相关推荐

  1. Java程序员职业规划如何做?发展方向有哪些?

    Java程序员职业规划如何做?程序员一直被贴青春饭的标签,很多人写了3年代码生活工作趋于稳定,每天忙忙碌碌抱怨没有时间提升学习,职业发展遇瓶颈,入行前就应该规划好自己的职业发展发展方向. 一.按照Ja ...

  2. Java程序员职业规划如何做?

    在中国有很多人都认为IT行业是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一 ...

  3. chatGPT写的一篇java程序员职业规划

    最近几年,我有很多学生在学习 java技术,其实在学 java的过程中,我们都会遇到职业规划的问题.我有一位学生问了我一个很有趣的问题,他问:"我不知道自己适合什么岗位?我还没有想好以后是做 ...

  4. 分享大牛开发经验,浅谈java程序员职业规划

    在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这...... 在中国有很多人都认为I ...

  5. 分享8年开发经验,浅谈java程序员职业规划

    在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一 ...

  6. 2021年Java程序员职业规划!吐血整理

    前言 事务我们都知道是什么,而Spring事务就是在数据库之上利用AOP提供声明式事务和编程式事务帮助我们简化开发,解耦业务逻辑和系统逻辑.但是Spring事务原理是怎样?事务在方法间是如何传播的?为 ...

  7. 《我也能做CTO之程序员职业规划》之十六:逆商

    <我也能做CTO之程序员职业规划 >之十六:逆商Adversity Quotient (=AQ) 本文选自<我也能做CTO之程序员职业规划 >一书 锐哥想在工作之余到小蔡学校进 ...

  8. 《我也能做CTO之程序员职业规划》之十五: 智商

    <我也能做CTO之程序员职业规划>之十五: 智商 Intelligence Quotient ( =IQ ) 本文选自<我也能做CTO之程序员职业规划 >一书 小蔡和大熊毕业答 ...

  9. 我也能做CTO之程序员职业规划 之八 决胜面试

    决胜面试 本文选自<我也能做CTO之程序员职业规划 >一书 经过锐哥的指点,小蔡的心态与技术能力都有了很大的提高,经过广撒网,争取到了几个公司面试机会,面试过后自我感觉还不错,故又开始飘飘 ...

最新文章

  1. MinkowskiNonlinearities非线性
  2. iOS深入探索直播推拉流实现流程(二:推流权限判断 )
  3. POJ.2774.Long Long Message/SPOJ.1811.LCS(后缀数组 倍增)
  4. Spring靴子战争包装
  5. stylegan-encoder代码执行步骤和解释
  6. pix4d无人机影像处理_让无人机创造更大价值?你还差一个Pix4D培训会!
  7. python培训班靠谱吗-python培训机构靠谱吗?python培训班
  8. SSH Secure Shell Client安装和使用
  9. ubuntu 编译安装 apache 2.4.3
  10. Java SSM开发大众点评后端 Mybatis实战商城项目
  11. SolidWorks Simulation热仿真优化设计 提高企业生产效率
  12. 超级详细的IDEA设置Java类和方法的注释模板
  13. 电脑弹窗广告太多了,程序员电脑为什么没有弹窗,那是你没打开这个设置
  14. fold/foldLeft/foldRight区别和联系
  15. FineCMS任意头像上传漏洞复现:文件的四次上传
  16. 15微型计算机系统不包括,全国2002年10月自学考试计算机应用基础真题
  17. opencv | A02 播放本地视频 调用摄像头
  18. html5无法绘制线条,Html5画布 - 使用fabric.js绘制完美线条或不使用
  19. 用Java实现成绩等级划分
  20. 抖音带货平台怎么收费?抖音带货费用有哪些

热门文章

  1. 2017秋招求职历程总结
  2. Python简易爬虫教程:笔记部分
  3. Windows中d3dcompiler_33.dll丢失怎么解决
  4. 一个或多个空格、TAB等分隔符隔开的字符串
  5. 笔试题-2023-禾赛-FPGA【纯净题目版】
  6. 风月几曾冷去   文 / 柳低金缕
  7. 瞰见 | 初创1个月就融到3亿美金,ClickHouse 你凭什么?
  8. 谈谈自己考研复习的计划
  9. 为什么我会持续关注香港事件
  10. python以只读方式打开文本文件的参数_python:文件操作