前言

其实从去年开始就有想法跳槽,然而始终犯懒跟回避现状,到了往年五月份才正式提出到职,下班的工夫我也进来面试过几家公司,起初总感觉退职找工作总得销假,便信心到职找工作(其实裸辞还是挺有危险的),到了七月初才正式入职百度,还记得面试胜利那天,我给敌人发了十几条音讯说我面试胜利了,辞职后的一个月我也经验了很多公司,有外包的、守业的、互联网的等等各种类型,收到了很多offer,也有面试不顺利的。明天就通过博客来记录一下本人面试中的问题,围绕着两年java到底应该具备什么样的程度能力适应当初市场的要求的主题来谈一谈。

本篇博客目录:

  • 面试中的问题
  • 面试中要留神的问题
  • 对于最初的抉择
  • 两年java到底应该具备什么样的程度

因为篇幅问题,我没有把答案展现进去,大家也能够自测一下看看可能全副答复上来,如需答案可戳此处获取

一:面试中的问题

java汇合框架:

1:介绍一下java的汇合框架
2:HashMap遇见哈希抵触会如何怎么办?HashMap是线程平安的吗?HashMap在高并发下会有什么问题?而后引入ConcurrentHashMap的原理?
3:Hahtable和concurrentHashMap的区别?
4:数组和ArrayList的区别?Arraylist是如何扩容的?
5:线程池中的阻塞队列个别会抉择哪种队列?为什么?
6:RetreenLock的原理?AQS的原理?
7:HashMap的容量为什么举荐是2的幂次方?

框架类:

1:mybatis的二级缓存有什么问题?
2:mybaits中的mapper的#{}和${}有什么区别?哪种能够避免sql注入?
3:咱们晓得mybatis的mapper和接口之间是没有对象的,那么它是如何映射的?
4:说说springmvc的注解有哪些?他们的原理是什么?
5:springmvc的控制器是单例的吗?是线程平安的吗?
6:struts1和struts2的区别?是线程平安的吗?
7:spring如何解析它的xml文件?
8:spring的外围是什么?Aop的原理是什么?

redis相干:

1:redis数据类型有哪些?
2:zset数据类型是如何排序的?
3:redis如何做我的项目的两头缓存层?
4:redis的Hash的工夫复杂度是多少?

因为篇幅问题,我没有把答案展现进去,大家也能够自测一下看看可能全副答复上来,如需答案可戳此处获取

数据库:

1:数据库索引分为哪几种?组合索引有什么要留神的问题?
2:什么是乐观锁 什么是乐观锁?如何实现乐观锁?
3: 数据库关键字的执行程序是什么?
4:如何进行sql优化?
5:有没有进行过分库分表操作?分库之后如何放弃事务统一?

分布式和微服务:

1:微服务要克服那些问题?微服务零碎是怎么通信的?
2:分布式环境下如何解决session不统一的问题?
3:分布式下如何保障id统一?
4:你在dubbo的应用过程中遇到什么问题?
5: zookeeper的负载平衡算法有哪些?

jdk源码相干:

1:synchronized的原理?它该怎么用?如何一个办法是synchronized的,其余的非synchronzied线程能进入吗?
2:cvs中的ABA问题如何解决?
3:volatile的原理是什么?volatile肯定是线程平安的吗?
4:ThreadLocal是什么?它的原理是什么?
5:CountDowanLatch有没有用过?适宜在什么样的场景下用?

设计模式相干:

1:实现两种单例模式
2:讲一下观察者模式
3:spring中都用到哪些设计模式?
4:动静代理模式是如何实现的?
5:你在我的项目中用到哪些设计模式了?解说一下业务场景

算法相干:

1:疾速排序的工夫复杂度?手写疾速排序(留神递归式和非递归式的实现形式)
2:手写二分查找
3:手写堆排序
4:一个int数组如何进行奇数和偶数拆散?
5:用算法实现String转double

jvm相干:

1: jvm的垃圾回收算法有哪些?别离解释一下?
2: 新生代为什么要设置两个survior区?
3:如何通过一个.class文件获取它的jdk版本?
4:jvm的内存模型?哪些是线程公有的?哪些是公共的?

因为篇幅问题,我没有把答案展现进去,大家也能够自测一下看看可能全副答复上来,如需答案可戳此处获取

对于本人的我的项目(问的工夫最长)

1:简述一下本人的我的项目?你在其中次要是做什么的?
2:你在我的项目中都遇到了哪些难题?最初都是怎么解决的?
3:我的项目有多大规模?周期多久(这个很多都问到的)
4:讲一下某一模块的具体实现形式?而后从中挑刺
5:如何解决某一时刻的高并发申请?
6:如何解决订单领取回调的超时问题?轮询应该怎么写?

其余:

1:秒杀场景如何削峰?
2:http和udp的区别是什么?
3:ajax的跨域问题
4:nio与io的区别?什么状况下适宜用nio
5: 说说常见的linux命令,linux查看内存的命令是什么?
7:git遇见代码抵触了怎么办?
8:说几个常见的maven命令,maven如何排除一个jar包的抵触?

二: 面试中要留神的问题

1、肯定要有本人的理论我的项目教训

依照我这么多面试教训?其实有的公司会侧重于问本人做的我的项目教训,有的公司侧重于问问题,个别互联网公司会对技术要求比拟高,既要求我的项目教训又要要求技术水平

2、能够适当渲染,然而不要言过其实

面试的过程中最禁忌的就是沉默寡言,高屋建瓴很厉害,然而一到理论细节都不知所云了,在技术总监背后,其实你吹牛或者是真的会他是高深莫测的。不懂装懂,有的面试官又给你台阶下,不然你就卡带了,这很容易造成面试的不好印象

3、要会自我介绍

面试的时候个别的话都会让你做一个自我介绍,这个要分对象,是技术官还是Hr,如果是技术官侧重于综述一下本人的我的项目的理论技术栈和技术路线,如果是Hr的话不要用过多的技术语言,而要说一些本人的理论工作经验或者本人上家公司的经营状况

4、对于简历

简历切记不可太啰嗦,然而不可太简略,作为技术的简历个别起码得在3页,不然HR会感觉你的求职态度不怎么好,不论如何求职后果如何,一个良好的简历会给人留下好的第一印象

三:对于最初的抉择

说实话也承受到很多HR的offer邀请,然而我个别会抉择说考虑一下一天当前再给回复,切不可间接把话说死,不然前面就难堪了。理论提供的offer的有一家外包公司,三家守业公司,两家互联网公司,最终抉择了百度,尽管实际上班地点有点远(下了地铁还得座公交,起初还是抉择骑单车了),然而大厂会给你快的成长速度,并且技术栈都比拟新..相比于传统企业会有更多的技术挑战。而外包公司的话,可能环境不怎么好,我记得本人当初还是个小白的时候,去了外包,那里的长处就是会有一直的活,新人进去的话播种还是挺多的,然而作为曾经有两年教训的我,外包很显然不适宜我的前期职业倒退。毛病:技术更新迭代的太慢,没有归属感,最初的抉择我集体的意见是抉择技术优先,毕竟当前软件路还长,技术才是王道!

四:两年java到底应该具备什么样的程度

两年java的面试过程中遇到了很多挑战,也遇到了一些不谈技术的公司,从下面的面试题能够看出,目前对于java的要求越来越高,水涨船高,毕竟这个行业的人数越来越多,而放弃本人的竞争力的惟一办法就是找对方向,一直学习,留神这里我提到的第一点是方向,而后才是学习。给本人制订一个职业规划,依照这个路线往前走,我其实还在想散布式微服务这块当前再深刻学习,可是依照市场要求,当初曾经迫不及待了,一些技术架构比方:springcloud、duboo都得放弃学习,这样能力有竞争力!作为一名两年的javaSir,你必须具备以下技能

  • 浏览源码的能力,多用Intelj idea这个开发工具,而不是eclipse。它是间接反对反编译class文件的,多读jdk源码,排汇优良的源码并加以复用
  • 做到可能手写常见的排序算法,比方疾速排序和堆排序、冒泡排序、抉择排序、二分查找这些都是必须的
  • 对java的框架有很深刻的意识,当初根本风行的ssm框架很多人都会,可是晓得一些原理的人就不多了,得一直钻研这些框架自身,它们都是通过无数次锻炼 进去的优良框架
  • 多用redis\mongodb,传统的关系型数据库曾经无奈市场需求了,这些货色也是面试中的一部分,虽不是重点,但也是加分的选项
  • 对于微服务和分布式,这个是有肯定难度的,我在面试人人车的时候,一面很顺利,二面被技术总监给pass了,问题就是分布式不是特地相熟!要想进入好的互联网公司,分布式和微服务是很必须的
  • jvm的底层,这里要举荐的书就是周志明的《深刻jvm虚拟机》这本书了,我总在空闲工夫读它,所以jvm的问题还是信手拈来的

作为浏览福利,我也整顿了一些Java学习材料+面试真题,有些局部也是我花钱购买的,当初收费分享给浏览到本篇文章的Java程序员敌人们,心愿能帮忙到大家!

材料获取形式:点赞+转发之后,点击此处