面试官:大部分面试官都会问到的5个Java面试题你都怀疑人生,还跟我提想要月薪20k?...

本文主要是介绍面试官:大部分面试官都会问到的5个Java面试题你都怀疑人生,还跟我提想要月薪20k?...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文是一位粉丝朋友前段时间的真实面经经历,面的是蘑菇街

背景介绍:

工作经验:Java开发5年

学历背景:重庆邮电大学(信息安全专业)

工作经历:主要业务在柬埔寨做移动支付钱包(聚合支付的项目,让柬埔寨当地华人能使用微信、支付宝支付)

注意:以下内容均为真实面经分享,大家可以认真阅读完,看下这些面试题你是否能答的让面试官满意,同时我也会分享一些面试的小技巧给大家,主要告诉你如何准备简历,如何准备面试,2020大厂面试真题分享(含答案),哪些学习资料值得看。

话不多说,下面一起跟着这位粉丝朋友面试经历来看看他的面试之旅吧,另外,下文中涉及到的面试题答案、复习资料,均有完整PDF版分享

 

面试官:自我介绍一下吧

程序员:你好,我毕业于XXX,工作5年了,最近的工作主要是负责XXX(见以上背景介绍)

面试官:看到你写到熟练掌握Java语言的高级特性,简单介绍一下Bean SpringBean一个注入过程吧

程序员:Bean的注入过程......首先是从配置文件(注解)里面把它和对象.....额,我对这方面还是不太熟悉

面试官:没事没事....我们接着往下聊

程序员:尴尬一笑

面试官:我看大你写到你了解一些高级特性,你能给我简单的介绍一下Java8有哪些新特性吗,或者你比较擅长的新特性有哪些?

程序员:Java8主要就是在语法上就是lambda表达式,它可以用函数式进行那个函数式编程,函数式接口的意思就是它这个接口它只有一个方法.....

面试官:还有别的吗?

程序员:还有一些流的操作,比如:Stream API它可以简化编程语义,显得更清晰,比如在做一个filter功能,就可以绑定数据把不符合要求的数据过滤掉,就在以前的话写一个for循环,看起来就没那么好理解....然后对于数据结构进行了一些优化,像ConcurrentHashMap,它底层实现改成了红黑树.....

面试官:你刚刚说的都是一些优化,我问的是它新加的一些高级特性

程序员:再次尴尬一笑.....

 

面试官:你刚刚提到它的流式处理,那对比像foreach或者基本的for循环,它有没有在效率上进行优化,还是说它更慢了?你有去了解过吗?

程序员:额...没有

面试官:我看你说对并发编程有些了解,你能跟我讲一下Synchronized和Lock锁它的底层实现原理吗?

程序员:啊....Synchronized是一个语义级的支持,它在一个对象头里面,它有一个Mark Word的标记去记录它的锁,Lock显示锁是利用了它底层是一个AQS,它式一个双向链表的先进先出的一个队列,它只有当前持有锁的线程就是一个对头,然后它释放出来之后,就会利用一个自旋的操作,让下一个线程作为队头这样子

面试官:那它们两个分别是什么层面的呢,是jdk层面还是JVM层面,还是?

程序员:Synchronized是JVM层面的,Lock是jdk层面的

面试官:刚刚你说到了Synchronized,你有去了解过它锁方法、锁对象和锁代码块分别是怎么去实现的吗?

程序员:额.....这个没有

面试官:那你了解Synchronized锁升级过程吗?

程序员:没有....

面试官:那刚刚提到了Lock,CAS你能给我简单的介绍一下吗?

程序员:CAS就是比较并交换

面试官:恩恩,提到这点就可以了,那你有在实际开发过程中有实际的一些应用吗?应用到乐观锁的一个过程

程序员:有的,就譬如,我在更新数据库的时候,如果一个数据库用的是乐观锁的话,我也用一个自旋的操作,就把他更新到成功为止

面试官:自旋的效率会不会很低?如果一直取不到这个锁的话,那可能会造成一些线程堵塞,或者在高并发场景下其他的会影响到很多效率,有考虑到这个问题吗?

程序员:也考虑到了.....如果并发高的时候确实不太适用用自旋,这个时候更适合用悲观锁

面试官:那跟我聊一下线程池吧

程序员:线程池是.....我还是先说一下它的工作流程,再变成先提交进来,它先进入核心吃里面,如果线程书大于coreSize,就会进入一个阻塞队列,阻塞队列满了后就会新建一些线程,进入最大的池里面;当线程数,连maxSize的超出了之后,它就会执行一个拒绝策略,JDK自带的拒绝策略有四种:一种是直接丢弃;一种是抛异常;一种是由调用者的线程执行;一种是丢弃阻塞队列里面等待时间最长的一个线程

面试官:我看你简历上还提到了熟练掌握JVM调优的知识,我能问一下你了解它调优的一些基本步骤吗?

程序员:啊....一口老血,调优的基本步骤....就譬如,我从...恩..我从OOM说起吧....如果生产上发生一个OOM异常,首先是要判断它是在堆里面发生的还是元空间里面,还有......它还有一种类型就是GC效率过低.....吧啦吧啦

注意:由于内容过多,避免影响到阅读体验,下面的面试环节我就不码字了,全以截图代替了!

 

 

面试官:我看你基本上都是待了一年就离职了,你能说一下你离职的原因吗?

程序员:.........

面试官:你对自己职业规划大概是什么样的?

程序员:往互联网金融行业走

面试官:你有什么想问我的?

程序员:问了一些之前没太懂的

面试总结:从这场面试官中可以看出,面试官没有深问,不然估计80%的内容都答不上来,基本上都是偏基础的东西,底层的内容没有怎么问,写了个Dubbo在简历上,面试官都没有问他Spring Cloud,Hystrix容器这些,连bus都可以问出一堆东西,一旦问了真的就只有尴尬了,问到怀疑人生。

如何备战面试

首先,像这位朋友一样,可以去投一些小公司的简历,去面试扫盲,看看哪些东西不会,欠缺哪些知识,然后回家做面试复盘。

针对自己简历做优化,不要搞得写了一个Dubbo,然后面试官稍微往深一点问你就答不出来了。简历上注意以下三点:

(1)注意区分:了解,熟悉,精通,不要乱写,面试官很多问题都是根据简历描述来进行的;

(2)专业知识和项目经验在精不在多,尤其是项目经验一定要写自己熟悉的且有内容可说的,不要认为写得越多越好;

(3)要熟悉自己的简历内容,准确掌握,最好是多阅读自己的简历。

其次,也可以在前期做好准备,多去刷一刷面试题,多看一些学习资料或者视频教程等等,这里我也分享一些我收集整理出来的学习资料以及面试真题分享给大家。

Java核心内容整理

面试真题整理

 

建议

大家可以把Java基础,JVM,并发编程,MySQL,Redis,Spring,Spring cloud等等做一个知识总结以及延伸,再去进行操作,不然光记是学不会的,这里我也提供一些脑图分享给大家:

 

 

最后

无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。

针对以上面试技术点,我在这里也做一些资料分享,有需要的朋友可以扫码获取

这篇关于面试官:大部分面试官都会问到的5个Java面试题你都怀疑人生,还跟我提想要月薪20k?...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/794327

相关文章

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法