前言:从过年前就萌生出要跳槽的想法,到过年来公司从3月初提出离职到23号正式离职,上班的时间也出去面试过几家公司,后来总觉的在职找工作总是得请假,便决心离职后找工作。到4月10号找到了一家互联网公司成功应聘上,中间也经历了很多公司,有外包的、创业的、互联网的等等各种类型,也收到了很多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注入?

2:我们知道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包的冲突?
二: 面试中要注意的问题
2.1:一定要有自己的实际项目经验
按照我这么多面试经验?其实有的公司会侧重于问自己做的项目经验,有的公司侧重于问问题,一般互联网公司会对技术要求比较高,既要求项目经验又要要求技术水平
2.2:可以适当渲染,但是不要夸大其词
面试的过程中最忌讳的就是夸夸其谈,高屋建瓴很厉害,但是一到实际细节都不知所云了,在技术总监面前,其实你吹牛或者是真的会他是一目了然的。不懂装懂,有的面试官又给你台阶下,不然你就卡带了,这很容易造成面试的不好印象
2.3:要会自我介绍
面试的时候一般的话都会让你做一个自我介绍,这个要分对象,是技术官还是Hr,如果是技术官侧重于综述一下自己的项目的实际技术栈和技术路线,如果是Hr的话不要用过多的技术语言,而要说一些自己的实际工作经历或者自己上家公司的运营情况
2.4:关于简历
简历切记不可太啰嗦,但是不可太简单,作为技术的简历一般起码得在3页,不然HR会觉得你的求职态度不怎么好,不管如何求职结果如何,一个良好的简历会给人留下好的第一印象
三:关于最后的选择
   说实话也接受到很多HR的offer邀请,但是我一般会选择说考虑一下一天以后再给回复,切不可直接把话说死,不然后面就尴尬了。实际提供的offer的有一家外包公司,三家创业公司,两家互联网公司,最终选择了一家互联网公司,虽然实际上班地点有点远(下了地铁还得座公交,后来还是选择骑单车了),但是互联网公司会给你快的成长速度,并且互联网技术栈都比较新..相比于传统企业会有更多的技术挑战。而外包公司的话,可能环境不怎么好,我记得自己当初还是个小白的时候,去了外包,那里的优点就是会有不断的活,新人进去的话收获还是挺多的,但是作为已经有两年经验的我,外包很显然不适合我的后期职业发展。缺点:技术更新迭代的太慢,没有归属感,最后的选择我个人的意见是选择技术优先,毕竟以后软件路还长,技术才是王道
 
四:两年java到底应该具备什么样的水平
 两年java的面试过程中遇到了很多挑战,也遇到了一些不谈技术的公司,从上面的面试题可以看出,目前对于java的要求越来越高,水涨船高,毕竟这个行业的人数越来越多,而保持自己的竞争力的唯一方法就是找对方向,不断学习,注意这里我提到的第一点是方向,然后才是学习。给自己制定一个职业规划,按照这个路线往前走,我其实还在想分布式微服务这块以后再深入学习,可是按照市场要求,现在已经刻不容缓了,一些技术架构比如:springcloud、duboo都得保持学习,这样才能有竞争力!作为一名两年的javaSir,你必须具备以下技能
1:阅读源码的能力,多用Intelj idea这个开发工具,而不是eclipse。它是直接支持反编译class文件的,多读jdk源码,吸收优秀的源码并加以复用
2:做到能够手写常见的排序算法,比如快速排序和堆排序、冒泡排序、选择排序、二分查找这些都是必须的
3:对java的框架有很深入的认识,现在基本流行的ssm框架很多人都会,可是知道一些原理的人就不多了,得不断研究这些框架本身,它们都是经过无数次锤炼 出来的优秀框架
4:多用redis\mongodb,传统的关系型数据库已经无法市场需求了,这些东西也是面试中的一部分,虽不是重点,但也是加分的选项
5:对于微服务和分布式,这个是有一定难度的,我在面试人人车的时候,一面很顺利,二面被技术总监给pass了,问题就是分布式不是特别熟悉!要想进入好的互联网公司,分布式和微服务是很必须的
6:jvm的底层,这里要推荐的书就是周志明的《深入jvm虚拟机》这本书了,我总在闲暇时间读它,所以jvm的问题还是信手拈来的
 
最后送上福利:慕课网的dubbo视频和springcloud视频、java高并发处理视频(在慕课买得花800块左右)如果有谁想要,可以在下面留言,免费分享哦,我花了些钱买的。ps:一些网友评论说链接失效了,平时工作太忙,真的没空补链接,需要视频资料的同学可以加我建的一个java技术交流群:618626589.群里有视频资料,大家也可以探讨一下技术,欢迎加入
 

两年Java的面试经验的更多相关文章

  1. 一个两年Java的面试总结

    前言 16年毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有幸去了网易.但是 ...

  2. Java后端面试经验总结分享(一)

    今天下午两点的时候,我去面了一家招Java开发的公司,本人工作经验2年多一丢丢. 跟大部分公司类似,先做一份笔试题,题目都比较简单,基本都写完了.我把题目以及答案列在下面一下,给自己做一下总结的,也分 ...

  3. 腾讯,华为,阿里…7家Java后端面试经验大公开!

    感觉面试还是主要围绕简历来问的,所以不熟悉的东西最好不要随便写上去.项目和基础都很重要,整体的基础知识的框架可以参考GitHub 上 CYC2018的博客,分类很全,但是深入的学习还是要自己去看书,写 ...

  4. 工作三年终于社招进字节跳动!字节跳动,阿里,腾讯Java岗面试经验汇总

    前言 我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿到了字节跳动的o ...

  5. 2年Java开发工作经验面试总结

    最近换了个公司,从三月底开始面,面到四月底,面了有快二十家公司.我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些问题是自己之前没遇到过的,或者是哪 ...

  6. 粉丝投稿!从2月份的面试被拒到如今的阿里P7,说一说自己学java以来的经验!

    个人近期面试情况 今年二月以来,我的面试除了一个用友的,基本其他都被毙了,可以说是非常残酷的.其中有很多自己觉得还面的不错的岗位,比如百度.跟谁学.好未来等公司.说实话,打击比较大. 情况基本上是从三 ...

  7. java面试资源(面试题、面试经验等)

    两年JAVA程序员的面试总结 https://www.cnblogs.com/xuwujing/p/7613084.html 2018JAVA面试题附答案(长期更新) https://blog.csd ...

  8. Java这样学,Offer随便拿,学习方法和面试经验分享

    Java这样学,Offer随便拿,学习方法和面试经验分享 学习中:https://mp.weixin.qq.com/s/iSutLzqCiPMWwm_Rm_2oPw

  9. BAT的面试经验_摘抄

    一.心态 心态很重要! 心态很重要! 心态很重要! 重要的事情说三遍,这一点我觉得是必须放到前面来讲. 找工作之前,有一点你必须清楚,就是找工作是一件看缘分的事情,不是你很牛逼,你就一定能进你想进的公 ...

随机推荐

  1. 使用Zabbix监控rabbitmq服务

    添加rabbitmq脚本 [root@controller rabbitmq]# cd /etc/zabbix/script/rabbitmq [root@controller rabbitmq]# ...

  2. 【第一章】Shell 概述

    一.什么是Shell? shell是一个命令解释器,它不仅包含大量的命令以实现操作系统的对话,还可以实现定义变量.条件判断.循环控制.函数调用等功能. 作用:解释执行用户输入的命令及程序等. 从键盘输 ...

  3. Solidity中的基本类型转换

    Solidity中的基本类型转换(十四)|入门系列 2017/4/29 posted in Solidity入门系列 点击查看原文,获得优化的排版. 隐式转换 如果一个运算符能支持不同类型.编译器会隐 ...

  4. VBA基础之Excel VBA 表格的操作(一)

    一.Excel VBA 表格的操作1. Excel表格的指定以及表格属性的设置 Sub main() '把表格B2的值改为"VBA Range和Cells函数" Range(&qu ...

  5. python切片详解

    先从原理上分析切片运算: list的切片,内部是调用__getitem__,__setitem__,__delitem__和slice函数.而slice函数又是和range()函数相关的. 给切片传递 ...

  6. vagrant简单学习使用

    1.安装vagrant 旧版本的vagrant可以在http://downloads.vagrantup.com/下载,支持的系统平台有mac,debian/ubuntu, centos,window ...

  7. Zigbee安全基础篇Part.3

    原文地址: https://www.4hou.com/wireless/14294.html 导语:在之前的文章中提供了ZigBee协议及其安全功能的简要概述.在本文中,我们将探讨可在ZigBee网络 ...

  8. Combobox的使用,日期选择器

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. linux解压zip

    用 unzip 的先安装 yum install -y unzip #unzip file.zip -d /root  -d指解压路径 ,不写的话默认当前目录

  10. C#多线程间的同步问题

    使用线程时最头痛的就是共享资源的同步问题,处理不好会得到错误的结果,C#处理共享资源有以下几种: 1.lock锁 需要注意的地方: 1).lock不能锁定空值某一对象可以指向Null,但Null是不需 ...