美文网首页互联网科技
“摸爬滚打”多年,从月薪3K到18K,一个JAVA程序员的面试心

“摸爬滚打”多年,从月薪3K到18K,一个JAVA程序员的面试心

作者: JAVA高级架构开发 | 来源:发表于2019-04-10 17:18 被阅读13次

    回顾一下自己这段时间的经历,去年十二月份的时候,公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。后续的面试过程我做了一些准备,基本都能走到hr面,后面我也顺利地拿到了offer,我给大家分享下我的求职体会,希望能给大家一些参考。

    下面说一下自己面试过程遇到的一些具体题目和面试心得。

    阿里面试题

    • 多个线程同时读写,读线程的数量远远大于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁?

    • JAVA的AQS是否了解,它是干嘛的?

    • 除了synchronized关键字之外,你是怎么来保障线程安全的?

    • Tomcat本身的参数你一般会怎么调整?

    • 你有没有用过Spring的AOP? 是用来干嘛的? 大概会怎么使用?

    • 如果一个接口有2个不同的实现, 那么怎么来Autowire一个指定的实现?

    • 如果想在某个Bean生成并装配完毕后执行自己的逻辑,可以什么方式实现?

    • SpringBoot没有放到web容器里为什么能跑HTTP服务?

    • SpringBoot中如果你想使用自定义的配置文件而不仅仅是application.properties,应该怎么弄?

    • SpringMVC如果希望把输出的Object(例如XXResult或者XXResponse)这种包装为JSON输出, 应该怎么处理?

    • 如果有很多数据插入MYSQL 你会选择什么方式?

    • 如果查询很慢,你会想到的第一个方式是什么?索引是干嘛的?

    • 查询死掉了,想要找出执行的查询进程用什么命令?找出来之后一般你会干嘛?

    • 读写分离是怎么做的?你认为中间件会怎么来操作?这样操作跟事务有什么关系?

    • 分库分表有没有做过?线上的迁移过程是怎么样的?如何确定数据是正确的?

    • 你知道哪些或者你们线上使用什么GC策略? 它有什么优势,适用于什么场景?

    • JAVA类加载器包括几种?它们之间的父子关系是怎么样的?双亲委派机制是什么意思?有什么好处?

    • 如何自定义一个类加载器?你使用过哪些或者你在什么场景下需要一个自定义的类加载器吗?

    • 堆内存设置的参数是什么?

    • HashMap和Hashtable的区别。

    • 实现一个保证迭代顺序的HashMap。

    • 说一说排序算法,稳定性,复杂度。

    • 说一说GC。

    • JVM如何加载一个类的过程,双亲委派模型中有哪些方法?

    • TCP如何保证可靠传输?三次握手过程?

    京东面试题

    • java常用的数据结构有哪些?哪些是线程安全的?是怎么保证线程安全的?

    • Redis中的Lua有没有使用过? 可以用来做什么? 为什么可以这么用?

    • 线程池内部工作原理可以说一下么?

    • 死锁是什么意思,形成条件是什么?出现死锁是可以通过什么方式去排查。

    • 在交易过程中如何放在用户在支付时的重复支付(交叉支付),请写出你了解的方案或使用的过的方案。

    • 数据库索引有哪几种,他们之间的区别。

    • 程序开发时通过开发工具DeBug调试时,控制台显示的内容都包含什么?哪些内容可以帮助你发现问题和解决问题。

    • RPC通信过程中,假设A系统提供了一个方法入参是一个JavaBean,出参也是一个JavaBean。另外两个系统B系统、C系统调用接口,调用方B想让提供方A增加一个返回参数,假设服务提供方A增加了返回参数,请问C系统调用方需要做什么处理?

    • 了解哪些设计模式,用伪代码实现一个你熟悉的设计模式。

    • 讲一下怎么使用分布式锁。

    • 说说HashMap的原理, 以及HashMap如何扩充bucket的大小。

    • Redis的Pipeline是用来干什么的?

    • Mysql索引的分类(Btree, hash),各自使用什么情况 。

    • 说说Myisam, Innodb区别。

    • 知道哪些负载均衡算法。

    • 说一下Btree的查找原理。

    • 简述三次握手,如果c端发起握手请求,s端无法立刻建立连接应该回应什么?

    说到这里,也给大家推荐一个架构交流学习群:614478470 点击加入,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,相信对于已经工作和遇到技术瓶颈的码友,在这个群里会有你需要的内容。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

    去哪儿网面试题

    • 自我介绍,项目介绍。

    • mysql数据库调优。

    • sql优化。

    • like能用索引吗?

    • java对象四种引用。

    • GC原理。

    • jvm内存结构。

    • 说一下你学过jvm 在书写代码上对你有什么帮助和提高。

    • 千万数据量的查询你会怎么做?

    • HashMap在jdk1.7和1.8的区别,为什么引入这个概念?hash碰撞怎么解决,为什么1.8要比1.7更好,好在哪?

    • 关于你的项目,如果并发很大,你会怎么改造。

    • 方法区里什么样的对象有可能被回收。

    • 线上cpu飙升100%你怎么处理。

    • 频繁FullGC怎么处理。

    • 线程池创建有几种,为什么创建定长的线程池个数最好是5,10,15这样的数字。

    • linux命令。

    • 伊甸区和幸存区可动态变化吗?

    • redis和memcached区别。

    • 说几个jdk命令,jmap是什么意思。

    • 如果并发很大,你对数据的正确性怎么保证。

    饿了么面试题

    • http和https的区别,https原理,http2.0与1.0的区别。

    • Java的垃圾回收机制,Java文件加载机制,tomcat类加载机制,锁机制,jvm原理及线上调优,jvm内存模型。

    • 多线程,有哪些可以保持进程同步的方法,创建线程的几种方法,对i++多线程访问你会怎么做。

    • Java的设计模式,单例有什么模式,懒汉为什么加volotile,volotile的内存屏障,如何避免死锁。

    • 考虑单例模式的编写,要线程安全且内存消耗小(剑指offer原题)。

    • String、StringBuilder、StringBuffer区别;String类能被继承吗?为什么?

    • 在白纸上手写二分法排序算法(lintcode上原题);二分查找的思想。

    • 查找单链表中倒数第k个节点的算法,手写(lintcode上原题);最常见的排序算法你见过哪些,快排的基本思想及时间复杂度。

    • 常见的数据结构有哪些。

    • hashmap、hashcode一样,不equals怎么处理 ;hashcode实现原理,currentHashMap原理,实现细节,怎么实现同步的;类为什么要有hascode方法,是不是主要在集合类中都要实现hashcode方法;equals方法怎么实现;两个不同的对象可能有相同的hashcode值吗;常用集合有哪些。

    • tcp三次握手,四次挥手协议。

    • 架构设计一个开发性问题,设计一个Nginx管理的中间件,怎么设计。

    • 所有的类都继承与object,你用过object类的直接子类有哪些,object类常用的方法有哪些。

    • Java会出现内存泄漏吗,如果回,在哪种情况下?

    • 抽象类和接口的区别。

    • 平时怎么扩展自己的专业知识水平。

    百度面试题

    • 什么是 Java 的反射机制。

    • Cookie 和 Session的区别。

    • get 和 post请求的区别。

    • IOC的优点是什么。

    • IO 和 NIO的区别,NIO优点。

    • JRE、JDK、JVM 及 JIT 之间有什么不同。

    • Hashcode 的作用。

    • 简述一致性 Hash 算法。

    • 为什么在重写 equals 方法的时候需要重写 hashCode 方法?equals与 hashCode 的异同点在哪里。

    • 为什么 Map 接口不继承 Collection 接口。

    • 说出几点 Java 中使用 Collections 的最佳实践?

    • GC是什么?为什么要有GC。

    • 什么时候会导致垃圾回收。

    • GC 有几种方式?怎么配置。

    • 什么时候一个对象会被GC? 如何判断一个对象是否存活。

    • 垃圾回收器的基本原理是什么?

    • Serial 与 Parallel GC之间的不同之处。

    • JVM 中一次完整的 GC 流程是怎样的? 对象如何晋升到老年代。

    • 吞吐量优先和响应优先的垃圾收集器选择。

    • 说说你知道的几种主要的jvm 参数。

    • Java中存在内存泄漏问题吗?请举例说明。

    • 什么是线程,多线程的优点是什么?以及简单说一下多线程的几种实现方式。

    • ThreadLocal 用途是什么,原理是什么,用的时候要注意什么?

    • 线程池是什么?为什么要使用它?如何创建一个Java线程池?

    • ThreadPool用法与优势可以说一下么?

    • synchronized 的原理是什么?synchronized 和 ReentrantLock 有什么不同?

    • 有T1,T2,T3三个线程,怎么确保它们按顺序执行?怎样保证T2在T1执行完后执行,T3在T2执行完后执行同步块内的线程抛出异常会发生什么?

    • 什么是乐观锁(Optimistic Locking)?如何实现乐观锁?如何避免ABA问题。

    • Java中活锁和死锁有什么区别?

    • Executors类是什么? Executor和Executors的区别?

    • 什么是设计模式(Design Patterns)?你用过哪种设计模式?用在什么场合?

    • 你能写出三种单例模式实现么?

    • 你知道Google是如何在一秒内把搜索结果返回给用户?

    • 高并发下,如何做到安全的修改同一行数据?

    • 如何避免浏览器缓存。

    • 大型网站在架构上应当考虑哪些问题?

    • 最近有在看什么书么,印象最深刻的是什么?

    • 你们线上应用的 JVM 参数有哪些?

    • 能简单说下你对算法的理解么?

    面试心得

    准备要充分,知识面要尽量的广,同时深度也要够。

    面试安排上,如果不着急,尽量给自己留多时间,两天一家,及时做总结和补充。

    心态要放平,当做一次技术交流,面试要看一部分的运气,也要看一些眼缘,有的面试官一张嘴你就能感觉到你这次面试完了。想去的公司没有面试好,不要气馁,继续加油准备。

    简历投递方面,拉勾上投了很多经常不匹配,可能是我学历问题(自考本),有一些打击自信心,如果有同样感受的,不妨换BOSS或者其他平台。避免打击自信心。

    写简历一定要体现自己的优势,最好能体现类似于,用到了什么技术,解决了什么问题。简历上写到的一定要胸有成竹。

    类似于你的优势是什么,你觉得你项目中做的比较好的地方有哪些,你能给公司带来什么,这种问题心里要先想一些,免得临场发挥容易紧张说不好。

    我所经历的面试,一般技术面最少是两轮。如果一轮后让你走了,而你还自我感觉良好,那我觉得你有必要回顾一下面试内容,并一条一条找找该问题的相关内容,大部分问题就在于你没有答到点子上,可能是深度不够,也可能是扩展不够,继续加油。

    说到这里,也给大家推荐一个架构交流学习群:614478470 点击加入,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,相信对于已经工作和遇到技术瓶颈的码友,在这个群里会有你需要的内容。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

    相关文章

      网友评论

        本文标题:“摸爬滚打”多年,从月薪3K到18K,一个JAVA程序员的面试心

        本文链接:https://www.haomeiwen.com/subject/ridoiqtx.html