【面试感悟】java程序员职业规划 面试衡量的3方面(项目经验,基本技术,个人潜力)面试心态,工作心态
引子
从过完年回苏州,就开始找工作,差不多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方面(项目经验,基本技术,个人潜力)面试心态,工作心态相关推荐
- Java程序员职业规划如何做?发展方向有哪些?
Java程序员职业规划如何做?程序员一直被贴青春饭的标签,很多人写了3年代码生活工作趋于稳定,每天忙忙碌碌抱怨没有时间提升学习,职业发展遇瓶颈,入行前就应该规划好自己的职业发展发展方向. 一.按照Ja ...
- Java程序员职业规划如何做?
在中国有很多人都认为IT行业是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一 ...
- chatGPT写的一篇java程序员职业规划
最近几年,我有很多学生在学习 java技术,其实在学 java的过程中,我们都会遇到职业规划的问题.我有一位学生问了我一个很有趣的问题,他问:"我不知道自己适合什么岗位?我还没有想好以后是做 ...
- 分享大牛开发经验,浅谈java程序员职业规划
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这...... 在中国有很多人都认为I ...
- 分享8年开发经验,浅谈java程序员职业规划
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一 ...
- 2021年Java程序员职业规划!吐血整理
前言 事务我们都知道是什么,而Spring事务就是在数据库之上利用AOP提供声明式事务和编程式事务帮助我们简化开发,解耦业务逻辑和系统逻辑.但是Spring事务原理是怎样?事务在方法间是如何传播的?为 ...
- 《我也能做CTO之程序员职业规划》之十六:逆商
<我也能做CTO之程序员职业规划 >之十六:逆商Adversity Quotient (=AQ) 本文选自<我也能做CTO之程序员职业规划 >一书 锐哥想在工作之余到小蔡学校进 ...
- 《我也能做CTO之程序员职业规划》之十五: 智商
<我也能做CTO之程序员职业规划>之十五: 智商 Intelligence Quotient ( =IQ ) 本文选自<我也能做CTO之程序员职业规划 >一书 小蔡和大熊毕业答 ...
- 我也能做CTO之程序员职业规划 之八 决胜面试
决胜面试 本文选自<我也能做CTO之程序员职业规划 >一书 经过锐哥的指点,小蔡的心态与技术能力都有了很大的提高,经过广撒网,争取到了几个公司面试机会,面试过后自我感觉还不错,故又开始飘飘 ...
最新文章
- MinkowskiNonlinearities非线性
- iOS深入探索直播推拉流实现流程(二:推流权限判断 )
- POJ.2774.Long Long Message/SPOJ.1811.LCS(后缀数组 倍增)
- Spring靴子战争包装
- stylegan-encoder代码执行步骤和解释
- pix4d无人机影像处理_让无人机创造更大价值?你还差一个Pix4D培训会!
- python培训班靠谱吗-python培训机构靠谱吗?python培训班
- SSH Secure Shell Client安装和使用
- ubuntu 编译安装 apache 2.4.3
- Java SSM开发大众点评后端 Mybatis实战商城项目
- SolidWorks Simulation热仿真优化设计 提高企业生产效率
- 超级详细的IDEA设置Java类和方法的注释模板
- 电脑弹窗广告太多了,程序员电脑为什么没有弹窗,那是你没打开这个设置
- fold/foldLeft/foldRight区别和联系
- FineCMS任意头像上传漏洞复现:文件的四次上传
- 15微型计算机系统不包括,全国2002年10月自学考试计算机应用基础真题
- opencv | A02 播放本地视频 调用摄像头
- html5无法绘制线条,Html5画布 - 使用fabric.js绘制完美线条或不使用
- 用Java实现成绩等级划分
- 抖音带货平台怎么收费?抖音带货费用有哪些