当前位置:首页>编程日记>正文

【鲁班学院】一个三年工作经验和月薪16k的java程序员应该要具备什么样的技能?...

大家好,我是鲁班学院的阿琰!我是有着三年工作经验的Java程序员。
目前一线城市的薪资水平在13到16K之间,但是找工作的时候并不仅仅有工作经验就行了,还需要一定的专业知识。如果你野心更大,想要进阿里美团头条等等这些大厂的话,那就需要更多的专业知识。那么,一个三年工作经验的Java程序员应该要具备哪些知识呢?
我整理了之后发现,程序员需要懂好多的知识。

这期视频共有十大类内容
项目经验
Java基础知识
集合框架
多线程
JVM相关问题

框架相关问题
消息中间件
Redis
数据库
其他
HR面试

一,项目经验

项目经验是程序员们最重要的财富,也是面试中必问的问题。一般面试官都会借着项目经验来考查应聘者的沟通能力和思考能力。三年工作经验的程序员一般都会有两个以上的项目经验,但实际我们大部分的情况都是做产品的一个功能或一个模块。 虽然我们能很好的完成工作上的要求,但是对于面试这肯定是不够的。对于面试来说,我们还要完成以下四点。

1、知道你的项目到底是做什么的,有哪些功能。
2、知道你做的项目在整个项目中所处的位置及作用,并能清晰地阐述模块间的调用关系。
3、知道你项目的整体架构和使用到的中间件,并对中间件的原理有一定的了解。
4、能流畅地阐述自己在项目中解决过的比较复杂的问题。

项目经验在于一朝一夕的积累,需要大家平时对自己的项目多积累,而且很多人会对自己的项目经验不是很有说服力而感到苦恼。 这里有个小技巧,即使工作中遇见的问题不是你自己解决的,但只要你能搞懂弄会,谁又会在面试中说这个不是你弄的呢?

二,Java的基础知识。

技术知识这块面试还是蛮常见的。不过大多问的比较简单。这是我罗列的一些我曾被问到的问题,大家私下参考一下。
1、栈和队列的区别
2、接口和抽象类的区别
3、Int和Integer的区别和自动拆箱/装箱的相关问题
4、常量池相关问题
5、==和equals的区别
6、重载和重写的区别
7、String和StringBuilder、StringBuffer的区别

三,集合框架。

集合框架的底层原理,是面试很常见的问题。无论去大公司面试,还是去小公司面试都会问。只不过问深问浅的区别。
1、ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurrentHashMap的底层实现原理
2、1.7版本和1.8版本的HashMap的区别
3、1.7版本和1.8版本的ConcurrentHashMap的区别
4、HashMap能不能排序?HashMap的长度为什么要是2的幂次方?
不过不管怎么样,大家去面试的话,都要把上述的问题都尽量弄懂。最低的要求就是把hashmap的底层原理弄懂。

四,多线程。

1、创建线程的几种方式?Wait,sleep分别是谁的方法,区别?线程间的通信方式?
2、介绍下什么是死锁,遇见过死锁吗?你是怎么排查的。(可以通过jps排查)
3、创建线程池的几种方式,线程池有什么好处。
4、线程继承和接口的区别,接口有什么好处。

5、Synchronized、Lock、ReentrantLock的区别,用法及原理。
6、CountDownLatch与CyclicBarrier用法
7、ThreadLocal的用法和原理
8、Volatile关键字的作用和原理

9、乐观锁和悲观锁
10、对公平锁,非公平锁,可重入锁,自旋锁,读写锁的理解
11、CAS是什么及底层原理
12、ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue等等堵塞队列的理解

13、ThreadPoolExecutor的传入参数及内部工作原理
14、给你一个具体的业务场景,让你使用ThreadPoolExecutor创建一个适合的线程池
15、分布式环境下,怎么保证线程安全
多线程一般是高级程序员面试中的重点。现在的项目高并发很多,所以面试多线程这块还是挺多的。一般大厂会问得很深。从第十点开始就蛮难的了,大家可以根据自己的情况酌情学习。

五,JVM相关问题

1、JVM内存机制
2、介绍下垃圾收集机制,垃圾收集有哪些算法,各自的特点
3、聊聊GC,谈谈Major GC,FullGe区别,垃圾收集器有哪些,他们的区别?

4、OutOfMemeryError这个错误你遇到过吗?你是怎么解决处理的?
5、JVM调优有哪些参数,介绍下,线上环境上,你是怎么查看JVM的参数并进行调优的?
6、能不能自己写一个类叫java.lang.String(类加载的过程,双亲委派模型)
JVM这块一直是高级程序员面试中的重点。想拿高薪这块一定得懂。而且不仅懂,还要有一定的实战经验。

六,框架相关问题。

1、Spring用了哪些设计模式?Spring注入bean的方式?对SpringIOC和SpringAOP的理解?
2、Spring事务隔离级别和传播机制?
3、Mybatis的缓存机制(一级缓存和二级缓存),Mybatis的mapper文件中#和$的区别

4、SpringMVC的流程
5、Spring和SpringBoot的区别?
6、对SpringBoot的理解

7、RPC框架有哪些,他们的区别?
8、Dubbo的使用和理解
9、Spring Cloud的使用和组件,谈谈你的理解
框架这块一直都是面试的重点,不过根据我的经验,框架这里一般不会问的很深,很少碰到让你说源码,主要还是考察你对框架的设计理解和框架的流程。

七、消息中间件,

1、你们公司是如何进行消息中间件的技术选型?
2、如何保证消息中间件的高可用?
3、如何保证消息中间件重复发送消息?
4、消息队列积压了大量的消息,你该怎么处理?
5、如何保证消费者消费消息是有顺序的?
6、让你来开发一个消息中间件,你会怎么架构?
消息中间件还是蛮重要的,无论对面试还是工作来说都是重点。大家一定要对这块多研究,多了解。

八,Redis

1、你们公司为什么要使用Redis?Redis有几种数据类型?
2、Redis持久化机制?Redis的过期策略?
3、怎么保证Redis的高可用?
4、什么是缓存穿透?如何避免?什么是缓存雪崩?如何避免?
5、如何保证缓存与数据库的双写一致性?
6、Redis单线程模型原理,为什么能支撑高并发?
7、Redis哨兵架构的理解和底层原理
现在高并发场景越来越多,基本面试必问缓存,只是或深或浅而已。比较常问的就是1到5,6、7想挑战大厂的可以去研究。

九,数据库。

1、工作中你是怎么优化sql的?
2、什么情况下,索引会失效?
3、数据库的存储引擎,比如:MySQL的MyISAM和InnoDB区别?
4、索引的最左原则
5、索引的底层原理
6、你们公司是怎么进行分库分表?分库分表的方案
数据库的优化一般都会问,涉及索引的地方会问的多些,还会问到难度比较高的用库分表,这里网上都有方案,一般都是主从库或Mycat,大家可以去学习了解一下。

十,其他

1、分布式事务是怎么解决的?
2、分布式session方案?
3、设计一个秒杀场景
4、怎么防止表单多次提交
5、Linux的基本操作命令
6、ElasticSearch的使用和原理
7、Zookeep的使用和原理
这块主要是问你一些常见的业务场景,比较开放式,还会根据你自己的简历来问。比如你的简历项目里面有ElasticSearch,那么面试官就会问你这些中间件的使用和原理。如果你成功地通过了所有的技术面,那么恭喜你,你离收到offer无限接近了。

十一,HR面

如果你面试的是大公司,还有最后一个考验,hr面试。这轮面试必须重视起来,即使前面的面试对你的评价再高,很多公司的hr对于面试者都有一票否决权。不过一般hr问的也不多。
1、简历中写的过去工作经历的离职原因
2、当前公司薪资待遇
3、期望能到怎样的一家公司
4、个人未来的发展方向
这里主要说下第二点,当前公司的薪资待遇是可以多报的,一般没什么公司会去审核。不过最好也别虚高的过分。指不定有些公司入职的时候会要求你提供最近一家单位的银行流水号,如果没有虚高的过分的话,你还可以用年终奖什么的来搪塞。如果过高解释不过去,那就很尴尬了。

好了,今天的分享就结束了,喜欢的朋友关注一下,点赞、投币、收藏一键三连~


http://www.coolblog.cn/news/b12bf382623247f3.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 《看透springmvc源码分析与实践》读书笔记一
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式
  • 通过Spark进行ALS离线和Stream实时推荐