一个三年Java工程师的面试总结

前言:

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

一、面试整体事项

1、简历要准备好,联系方式一定要正确清晰醒目,项目经历按照时间倒序阐述,注意描述自己在项目中承担的职责,简历的模板尽量选择简洁的,毕竟程序员大部分还是喜欢简单明了的。

2、推荐boss直聘,我觉得很好用(不是广告)。

3、一般的整体面试流程都是电面>现场面>HR面>等着。

4、不要觉得HR让你回去等消息就是GG了,他们也要跟你之前的面试官讨论,再向领导汇报,如果说不急可能还要和其他候选人比较,所以HR让你回去等消息绝不是说明你完蛋了。

5、面试前准备好自我介绍,1分钟左右就可以,最好写在纸上,电面可以照着念,等你到现场面试基本也能背下来自我介绍了。

6、准备好扎实的基础,这是一切的根源,没实力怎么都没用的。

7、面试中你可以把你的面试官往你会的知识上引导(我遇到过你会什么他不问什么的)。

8、遇到了设计类题目不要着急,面试官不是为了让你几分钟设计一个高并发高可用设计模式完美的架构,只是想看看你的思路,看看你应变的能力,然后给你些提示看看你能否迅速的调整。

9、offer都会有的,不要着急,把面试当成一个交流的过程。

二、需要准备的知识

以下为在近期面试中比较有印象的问题,也就不分公司了,因为没什么意义,大致分类记录一下,目前只想起这么多,不过一定要知道这些问题只是冰山一角,就算都会了也不能怎么样,最最重要的,还是坚实的基础,清醒的头脑。

Java基础

1、HashMap的源码,实现原理,JDK8中对HashMap做了怎样的优化。

2、HaspMap扩容是怎样扩容的,为什么都是2的N次幂的大小。

3、HashMap,HashTable,ConcurrentHashMap的区别。

4、极高并发下HashTable和ConcurrentHashMap哪个性能更好,为什么,如何实现的。

5、HashMap在高并发下如果没有处理线程安全会有怎样的安全隐患,具体表现是什么。

6、java中四种修饰符的限制范围。

7、Object类中的方法。

8、接口和抽象类的区别,注意JDK8的接口可以有实现。

9、动态代理的两种方式,以及区别。

10、Java序列化的方式。

11、传值和传引用的区别,Java是怎么样的,有没有传值引用。

12、一个ArrayList在循环过程中删除,会不会出问题,为什么。

13、@transactional注解在什么情况下会失效,为什么。

数据结构和算法

1、B+树

2、快速排序,堆排序,插入排序(其实八大排序算法都应该了解

3、一致性Hash算法,一致性Hash算法的应用

JVM

1、JVM的内存结构。

2、JVM方法栈的工作过程,方法栈和本地方法栈有什么区别。

3、JVM的栈中引用如何和堆中的对象产生关联。

4、可以了解一下逃逸分析技术。

5、GC的常见算法,CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the world的,CMS会不会产生碎片,G1的优势。

6、标记清除和标记整理算法的理解以及优缺点。

7、eden survivor区的比例,为什么是这个比例,eden survivor的工作过程。

8、JVM如何判断一个对象是否该被GC,可以视为root的都有哪几种类型。

9、强软弱虚引用的区别以及GC对他们执行怎样的操作。

10、Java是否可以GC直接内存。

11、Java类加载的过程。

12、双亲委派模型的过程以及优势。

13、常用的JVM调优参数。

14、dump文件的分析。

15、Java有没有主动触发GC的方式(没有)。

多线程

1、Java实现多线程有哪几种方式。

2、Callable和Future的了解。

3、线程池的参数有哪些,在线程池创建一个线程的过程。

4、volitile关键字的作用,原理。

5、synchronized关键字的用法,优缺点。

6、Lock接口有哪些实现类,使用场景是什么。

7、可重入锁的用处及实现原理,写时复制的过程,读写锁,分段锁(ConcurrentHashMap中的segment)。

8、悲观锁,乐观锁,优缺点,CAS有什么缺陷,该如何解决。

9、ABC三个线程如何保证顺序执行。

10、线程的状态都有哪些。

11、sleep和wait的区别。

12、notify和notifyall的区别。

13、ThreadLocal的了解,实现原理。

数据库相关

常见的数据库优化手段索引的优缺点,什么字段上建立索引数据库连接池。durid的常用配置。

计算机网络

TCP,UDP区别。三次握手,四次挥手,为什么要四次挥手。长连接和短连接。连接池适合长连接还是短连接。

设计模式

观察者模式代理模式单例模式,有五种写法,可以参考文章单例模式的五种实现方式可以考Spring中使用了哪些设计模式

分布式相关

分布式事务的控制。分布式锁如何设计。分布式session如何设计。dubbo的组件有哪些,各有什么作用。zookeeper的负载均衡算法有哪些。dubbo是如何利用接口就可以通信的。

缓存相关

redis和memcached的区别。redis支持哪些数据结构。redis是单线程的么,所有的工作都是单线程么。redis如何存储一个String的。redis的部署方式,主从,集群。redis的哨兵模式,一个key值如何在redis集群中找到存储在哪里。redis持久化策略。

框架相关

SpringMVC的Controller是如何将参数和前端传来的数据一一对应的。Mybatis如何找到指定的Mapper的,如何完成查询的。Quartz是如何完成定时任务的。自定义注解的实现。Spring使用了哪些设计模式。Spring的IOC有什么优势。Spring如何维护它拥有的bean。一些较新的东西JDK8的新特性,流的概念及优势,为什么有这种优势。区块链了解如何设计双11交易总额面板,要做到高并发高可用

一些小建议

可以去leetcode上刷题换换思路。八大排序算法一定要手敲一遍(快排,堆排尤其重要)。了解一些新兴的技术。面试之后面试官都会问你有没有什么问题,千万不要没问题,也别傻乎乎的问一些敏感问题。了解你要面试的公司的产品及竞争产品。

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。如果这些文字能够帮到你,那就最好了,帮不到就当是我自己的一个记录。最后,希望大家都能找到适合自己的公司,开开心心的撸代码。

最后

为了让学习变得轻松高效, 现在给大家提供一个学习平台,让你在实践中积累经验掌握原理。主要方向是JAVA架构师,在这里你可以学习Java工程化、高性能及分布式、深入浅出、性能调优、Spring,MyBatis,Netty源码分析和大数据等知识点,免费的大型互联网Java技术视频分享给大家。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python线性代数扩展库numpy.linalg中几个常用函数

本文内容节选自董付国老师2000页Python系列课件第17章“数据分析、科学计算、可视化、机器学习”(本章PPT共410页)。

19230
来自专栏企鹅号快讯

学习C语言你所必须要了解的知识

C 语言的发展方向 ? 20世纪80年代初,C 在 UNIX系统的小型机世界中已经是主导语言了,从那时开始,它已经扩展到个人计算机和大型机, 大部分软件开发商公...

40780
来自专栏java达人

博文精选|MobX — 10分钟极速入门 MobX 与 React

http://eyehere.net/2016/mobx-getting-started/(点击阅读原文前往)

9030
来自专栏H2Cloud

领域驱动设计-软件中的对象

软件中的对象 About DOMAIN-DRIVEN DESIGN 领域驱动设计是一种思维方式,目的在于处理具有复杂问题的软件项目。在传统的瀑布软件开发模型中,...

36150
来自专栏web前端教室

WEB前端架构(四)

今天是第三天,把购物车的基本功能算是都写完了。 这东西吧,思路想清楚之后,其实不难实现。 就是里面的逻辑交互很多,来来回回的,神烦啊,, 每一步每个操作都是对数...

24490
来自专栏Java架构

一个两年的程序员,面5家斩获点我达,网易offer的面试总结总结

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

11810
来自专栏HansBug's Lab

【作业】HansBug的前三次OO作业分析与小结

OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作。 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些。(点击就送指导书~)...

36060
来自专栏Crossin的编程教室

【Python 第41课】 用文件保存游戏(3)

你的小游戏现在已经可以保存成绩了,但只有一组成绩,不管谁来玩,都会算在里面。所以今天我还要加上一个更多的功能:存储多组成绩。玩家需要做的就是,在游戏开始前,输入...

26940
来自专栏申龙斌的程序人生

零基础学编程021:获取股票实时行情数据

春节期间重写了“笑来投资演练程序1.0版”这个程序,可以每个月自动更新几支股票的行情数据。程序的功能不复杂,但是编程新手想实现它仍有相当的困难。为了短时间内完成...

560120
来自专栏梧雨北辰的开发录

Python学习(1):入门与导学一、了解Python二、Python能做些什么三、Pthon特点四、Python的缺点五、Python之禅六、Python学习的相关资料

20960

扫码关注云+社区

领取腾讯云代金券