又是一年一度的金九银十跳槽季,回首在经历了半个月的求职奔波后,终于又能安稳的静下心来敲代码了,这期间一共面试了十几家公司,拿到了四份offer,刨除去那些给不起工资或是回复效率慢的因素外,回首总结了一下这段时间的经历,于是就有了今天和后续的面试经帖子,关于面试题咱们后续再聊,今天只说说面试这个事儿。
我们为什么要跳槽
跳槽的理由各种各样,但相信跳槽时那种糟心的心情都是一样一样的。那么我们为什么要跳槽呢?
马云曾经总结过,一个员工在你这不想干了,无非两个理由:
这两句话可谓是道出了多少跳槽人的心声。很多人都说程序员是吃青春饭的,虽然我本身并不是特别赞同这句话,但也可以看出一个问题,那就是现在还在市场上四处求职的人,基本上都是处于二十多岁到三十岁之间的,也就是我们所谓的九零后居多。
由于内容过多,因此为了避免影响到大家的阅读体验,在此展示部分面试题内容,详细完整版的看文末有免费的获取方式!
文章有点长,请耐心看完,绝对有收获!不想听我BB直接进入面试分享:
面试过程
阿里巴巴
1.你觉得你适合从事哪个方向的开发?
2.了解过JVM调优没,基本思路是什么?
3.volatile关键字的如何保证内存可见性?
4.淘宝热门商品信息在JVM哪个内存区域?
5.缓存的实现原理,设计缓存要注意什么?
6.如何设计存储海量数据的存储系统?
7.你觉得自己适合哪方面的开发,为什么?
1.java事件机制包括哪三个部分?分别介绍
2.为什么要使用线程池?
3.线程池有什么作用?
4.线程池都有哪几种工作队列?
5.怎么理解无界队列和有界队列?
6.线程池中的几种重要的参数及流程说明?
7.什么是分布式系统?
8.分布式系统你会考虑哪些方面?
9.什么是检查异常,不受检查异常,运行时异常?并分别举例说明
1.你说你熟悉并发编程,那么你说说Java锁有哪些种类,以及区别(果然深度不一样)
2.如何保证内存可见性?
3.AOP的原理
4.三次握手与四次挥手?
5.TCP连接的特点?
6.为什么TCP连接需要三次握手,两次不可以吗,为什么?
7.支付宝转账提现功能应该如何优化?
8.淘宝网络抖动,如何避免用户重复下订单?
9.支付宝系统可以从哪些角度优化提升性能?
10.双11高并发大促场景下,为什么只能够下订单, 而不能够退款?
如果你过五关斩六将,成功地通过了所有的技术面,那么恭喜你,你离升职加薪、出任CEO、迎娶白富美、走向人生巅峰又进了一步。但是还没有到谈薪资待遇的时候,最后还有一个考验:HR面试。基本所有的大公司都有这一轮的面试,不要小看HR面试,阿里HR对于面试者都有一票否决权的----即使前面的面试对你的评价再高。
所以,这轮的面试也必须重视起来,HR面试主要问的是几点:
1、简历中写的过去工作经历的离职原因
2、当前公司薪资待遇
3、期望能到怎样的一家公司
4、个人未来的发展方向
我专门提一下第2点。可能有人比较排斥也不想说这个,我个人倒是持开放状态,问了就说了,当然一些的夸大还是必要的,当前公司薪资待遇多报个一千块钱完全没问题(毕竟是一家互联网公司总多多少少有些补贴啊什么的嘛)。因为这和你在新公司能拿到的薪水关系不大,新公司能拿到的薪水的决定因素是整个公司的薪资情况以及根据你的面试情况在公司的定位,都是有固定的薪资范围的。HR问这个主要也就是心里有个数并且看你是否诚信----有些公司入职时会要求你提供最近一家单位的银行流水号。
字节跳动
1.说下你的实习项目吧
2.讲一下线程参数的含义
3. Innodb的索引实现
4. 为什么是B+树?
5. Redis的使用,分布式锁的实现
6. 操作系统虚拟内存换页的过程
7. TCP三次握手
8. volatile关键字的作用
9. 乐观锁、悲观锁
10. HashMap结构,是否线程安全?ConcurrentHashMap如何保证线程安全?
11. 之前用过哪些设计模式?
12. 算法题:滑动窗口
1. tcp 怎么保证数据包有序
2.tcp 和 udp 的异同
3. tcp 怎么保证可靠性
4. Spring AOP的原理
5. Spring IoC的原理,如何实现,如何解决循环依赖?
6. 两线程对变量i进行加1操作,结果如何?为什么?怎么解决?
7. 浏览器从输入网址到显示出网页的全过程
8. synchronize底层实现,如何实现Lock?
9. AQS有什么特点?
10. 手写项目中某个模块代码。
11. 介绍各种网络协议。
12. DNS在网络层用哪个协议,为什么。
13. 介绍HTTPS协议,详述SSL建立连接过程。
14. 代码题:反转单链表。
15. 代码题:复杂链表复制。
16. 代码题:数组a,先单调地址再单调递减,输出数组中不同元素个数。
要求:O(1)空间复杂度,不能改变原数组
1. 说一下Java垃圾回收机制
2. 64匹马,8个赛道,找最快的4匹马。
3. 64匹马,8个赛道,找最快的8匹马。
4. 给一个数组,例如[1,2,3,4,5], a[i]表示在该位置可以向前行走的最大距离,判断是否可以到达数组的最后一个元素。
5. 给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素
6. 讲一下多线程与多进程区别
7. JVM中什么时候会进行垃圾回收?什么样的对象是可以回收的?
8. Spring主要思想是什么?
9. 你未来的发展方向是什么?确定了么?打算一直做Java?有考虑过转吗?
10. 那你平时是怎么学习Java的呢?
11. 分享最近看的一本书
1. 自我介绍
2. 你了解字节跳动吗?说说你眼中的字节吧!
3. 你平时用字节跳动的哪个产品比较多?
4. 为什么想要来字节?意向城市是北京吗?
5. 说一下你自己的职业规划吧
6. 预期薪资
7. 其他一些常规问题
字节面试的整体氛围还是很棒的,面试官会边出题边引导,能缓解紧张情绪;
很多公式记得不牢,还需要理解更深入些,记得更牢些;GBDT相关的细节需要再进步写;特征选择因为做的比较久远,有些忘记了,需要赶紧总结回忆;编码题没有要求Bug Free,但是本身编码上还需要加强。需要学习NPL相关的东西。自己简历上的东西还需要再升级些。
百度
1.JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
2.WEB容器主要有哪些功能? 并请列出一些常见的WEB容器名字。
3.一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制
4.简单说说你了解的类加载器。是否实现过类加载器
5.什么是 N 层架构
6.什么是CORBA?用途是什么
7.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”
8.什么是正则表达式?用途是什么?哪个包使用正则表达式来实现模式匹配
9.什么是懒加载(Lazy Loading)
10.什么是尾递归,为什么需要尾递归
11.什么是控制反转(Inversion of Control)与依赖注入(Dependency Injection)
1.简述一致性 Hash 算法
2.有没有可能 两个不相等的对象有相同的 hashcode?当两个对象 hashcode 相同怎么办?如何获取值 对象
3.为什么在重写 equals 方法的时候需要重写 hashCode 方法?equals与 hashCode 的异同点在哪里
4.System.gc() Runtime.gc()会做什么事情? 能保证 GC 执行吗
5.垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
6.Minor GC 、Major GC、Young GC 与 Full GC分别在什么时候发生
7.垃圾回收算法的实现原理
8.JVM 中一次完整的 GC 流程是怎样的? 对象如何晋升到老年代
9.吞吐量优先和响应优先的垃圾收集器选择
10.JVM内存分哪几个区,每个区的作用是什么
11.一个对象从创建到销毁都是怎么在这些部分里存活和转移的
12.解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
13.JVM中哪个参数是用来控制线程的栈堆栈小
1.锁机制有什么用
2.什么是乐观锁(Optimistic Locking)?如何实现乐观锁?如何避免ABA问题
3.解释以下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲 观锁
4.WEB容器主要有哪些功能? 并请列出一些常见的WEB容器名字。
5.一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制
6.简单说说你了解的类加载器。是否实现过类加载器
7.ava中存在内存泄漏问题吗?请举例说明
8.简述 Java 中软引用(SoftReferenc)、弱引用(WeakReference)和虚引用
9.内存映射缓存区是什么
10.为什么要使用接口而不是直接使用具体类?接口有什么优点
1.您为何要离开目前服务的这家公司?
2.除了简历上的工作经历,您还会去关注哪些领域?
3.您在选择工作中更看重的是什么?
4.请您简要介绍一下自己的成长历程。
5.遇到最大困难是什么?怎么克服?
6.未来的规划是什么?
7.你想问我什么?
总结:
仅从我个人经历角度出发:
1,你所读的学校很重要
2,基础很重要,算法很重要
3,没做过一个上线的项目的,你很难表现自己
4,天道酬勤。
1、阿里内部手册、Java核心知识点
2,大厂面试答案
大厂面试资料整理不易
Java核心知识点整理
1000道互联网Java工程师面试题
一份是技术干货《Java核心知识点整理》
面试宝典《互联网Java工程师面试题大全》
《程序员代码面试指南》
字节跳动必备算法书,包含各类一线互联网大厂算法题
点击传送门免费获取