回馈牛客(java面经总结)

回馈牛客(java面经总结)

经过7月到8月的秋招提前批奋战,在牛客众多招聘信息和内推信息的帮助下,笔者成功拿下一些offer,整理了一下面试过程,希望能给大家一点帮助(笔者java方向)。

@author: NPawn

JAVA基础

JVM

  • jvm分区模型
    • 首先是模型分成哪几块,堆 栈等等。。
    • 哪些是线程私有的哪些是共有的
    • 1.6之前和现在1.8哪些地方做了改动(主要是静态区的变化)
  • 垃圾回收
    • 三种回收算法
    • 常见的垃圾回收器
    • root引用和引用计数
    • 频繁GC的原因和解决方案
    • 高并发后台怎么优化GC,我主要是说了调整eden和surival的比例啥啥啥的
  • 类加载器
    • 双亲委任
    • 如果发生了冲突,会出现什么情况-- 编译不报错,运行调用bootstrapclassloader加载rt.jar中的类
  • jvm调优
    • 加分项,美团面试的时候一面和面试官讨论了调优的一些细节 --xmns啥的
    • jvm工具,jstack jconsole 这些,还是看一丢丢,留个印象

java知识点

  • 常用类型
    • Hashmap 源码级掌握,扩容,红黑树,最小树化容量,hash冲突解决,有些面试官会提出发自灵魂的审问,比如为什么是红黑树,别的树不可以吗;为什么8的时候树化,4不可以吗,等等
    • concureentHashMap,段锁,如何分段,和hashmap在hash上的区别,性能,等等
    • HashTable ,同步锁,这块可能会问你synchronized关键字 1.6之后提升了什么,怎么提升的这些
    • ArrayList 优势,扩容,什么时候用
    • LinkedList 优势,什么时候用,和arraylist的区别 等等
    • HashSet,TreeMap
    • 基本类型和包装类型的区别,涉及自动装箱和拆箱,怎么做的,原理
    • &和&&区别
  • 别的一些需要注意的点
    • String ,StringBuffer,StringBuilder哪个是安全的,我就说反过。。
    • 字符串编码的区别,被问到过,我觉得比较容易被忽视的一个点
    • 什么是泛型,怎么用泛型
    • static能不能修饰threadLocal,为什么,这道题我当时一听到其实挺懵逼的
    • Comparable和Comparator接口是干什么的,其区别
    • 多态的原理是什么,感觉这个很容易被问到
    • 接口和抽象类,面试官问我是怎么理解的,我说接口对应功能,抽象类对应属性,然后面试官给我说了他的看法,说抽象类更偏向于一种模板~ 然后又交流了一下各自的想法
    • 如何通过反射和设置对象私有字段的值
    • 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么
    • List,Map,Set接口在取元素师,各有什么特点
  • java并发
    • 线程的实现方式——runnable thread future
    • 如何线程安全的实现一个计数器
    • 生产者消费者模式,要求手写过代码,还是要知道的
    • 单例模式,饿汉式,懒汉式,线程安全的做法,两次判断instance是否为空,每次判断的作用是什么。
    • 线程池,这个还是很重要的,在生产中用的挺多,四个线程池类型,其参数,参数的理解很重要,corepoolSize怎么设置,maxpoolsize怎么设置,keep-alive各种的,和美团面试官探讨过阻塞队列在生产中的设置,他说他一般设置为0,防止用户阻塞
    • cyclicbarrier 和countdownlatch的区别,个人理解 赛马和点火箭
    • 线程回调,这块 被问过让我设计一个RPC,怎么实现,其实用到了回调这块的东西
    • 线程的几种状态
    • sleep 和yeild方法有什么区别
    • volatile关键字,可见性。
    • 乐观锁和悲观锁的使用场景
    • 悲观锁的常见实现方式:lock synchronized retreentlock
    • 乐观锁:CAS MVCC
    • 读写锁的实现方式,16位int的前八位和后八位分别作为读锁和写锁的标志位
    • 自旋锁
    • 死锁的条件,怎么解除死锁,怎么观测死锁。
  • 大数
    • 我觉得这个点是我在面试中,被问到的比较不会的一个点
    • 题目是这样的:在java中,0.000000001 和0其实是判定相等的,那么我怎么才能得到真实值呢
    • bigdecimal java中的一个类,我觉得,多一些思考是比较重要的
  • 反射
    • 这个概念,我觉得是非常非常重要的概念,NN多的东西都可以归结为反射
    • 反射的实现及原理
    • 希望大家能够好好看一下反射的原理,怎么确定类,怎么调方法
    • RPC框架,同步异步,响应时间,这些都被问到过,还让设计过
  • IO
    • 同步,异步,阻塞,非阻塞 在深信服的面试中遇到过,最好再找一些应用场景加以理解

计算机网络

  • 网络概述
    • 七层模型
    • tcp的五层
    • 常见的每层的代表协议
  • TCP
    • 三次握手,四次挥手
    • 如果2次握手会怎么样,四次回收如果服务端直接把ack和fin一起返回做三次挥手会怎么样
    • 窗口机制,你了解吗
    • 如果用TCP进行服务器某端口的探测,你要怎么改tcp使得其消耗最少,面试官提示过我,tcp先发syn包,然后收到ack之后,直接回一个reset
    • 如果有一台机器B,去模拟机器A,向C发送syn包,这个时候会怎么样,讲真的,我一脸懵逼。。
    • TCP的原生API用过没
    • socket websocket 会从tcp里面引出来
  • UDP
    • 和TCP的区别
    • 应用场景
    • ftp 怎么实现的,,,
  • http
    • 浏览器中输入一个url,是一个什么样的通信流程
    • http1.0 和http1.1 加入了长连接 keep-alive时间怎么设置,,
    • http2.0 。。。 面试的时候真的是非洲问号,,
    • http中的几个方法
  • https
    • 加密方式
    • 非对称传输秘钥,对称传输数据
    • 常见的加密算法~
  • 别的问题补充
    • DNS寻址过程,递归~
    • 负载均衡反向***,这个时候,访问后台的那个ip到底是客户还是反向***,还怎么统计ip?
  • 还有一些新的协议
    • webRTC
    • http2.0
    • 然后有几个面试官提的,我忘了,,

Linux

  • 命令
    • 常见的命令
    • sed 和 awk 感觉linux必考。。
    • linux的使用场景,你什么时候会用linux -- 》 布置服务器
    • 怎么查看进程和杀死进程
    • 打印一个文件夹中的所有文件
  • 常见计算机原理的知识点
    • float在计算机中是怎么存储的,当时被问到的时候,我也在问自己,怎么存的~ 佛了
    • 线程和进程的区别
    • 线程的通信方式,进程的通信方式
    • 系统线程的数量上限是多少
    • 页式存储的概念
    • 内存碎片,你有了解过吗,有想过解决方案吗~

数据库

  • mysql
    • 引擎,区别是什么
    • 索引,有哪些索引,怎么用
    • 索引为什么要用B+树,B+树和B-树的区别是什么
    • mysql的默认事务级别,一共有哪些事务级别
    • mysql的一些语句,这些肯定需要掌握的
    • mysql事务是怎么实现的
    • mysql锁,行锁,表锁 ,什么时候发生锁,怎么锁,原理
    • 数据库优化,最左原则啊,水平分表,垂直分表

Spring相关

主要是配合项目进行询问,问的深度一般。看个人项目

  • spring
    • spring的两大特性- ioc aop,实现原理
    • 如果存在A依赖B,B依赖A,那么是怎么加到IOC中去的
    • beanFactory的理解,怎么加载bean
    • FactoryBean的理解
    • 基于注解的形式,是怎么实现的, 你知道其原理吗,说一下
    • 依赖冲突,有碰到过吗,你是怎么解决的~
    • bean的生命周期
    • 依赖注入的几种方式
    • spring中的自动装配方式
    • 总之,建议大家如果时间充裕,还是好好看看源码~~
  • spring mvc
    • 和struct的区别
    • 你一般是怎么对mvc项目进行分层的
    • dispatch-servlet的工作原理
    • ***怎么配置,工作原理
    • 为什么有了springmvc还要在项目中使用spring?
    • springmvc的运行机制,dispatch -》 hanldermapping-—》handler -》handlerAdapter-》执行handler-》modelandview -》 返回mv -》 视图解析器-》返回view -》 渲染响应
  • mybatis
    • 配置
    • 怎么防止依赖注入
    • 和hibernate相比,为什么选择mybatis
    • 怎么让mapper 和xml对应
    • 如何自动包装对象
    • 逆向工程
  • springboot
    • 和spring相比,做了什么改变
    • starter你知道哪些
    • 如何部署springmvc项目 以及如何部署springboot项目
    • springboot的插件,你使用过哪些

中间件

  • redis
    • 为什么选择redis,有什么好处,基于内存,抗压
    • redis集群怎么进行数据分配,hash槽
    • redis的主从复制是怎么实现的
    • redis的数据结构 最常问 hash是什么, sorted set怎么实现的
    • 因为项目的原因,问我redis是怎么保证高可用的,主从和集群怎么加在一起
    • redis 和mem***的区别
    • redis 分布式锁的实现原理 setNX 啥的
    • redis模拟session,除了redis你还考虑过别的吗
    • redis的缓存击穿,怎么处理这个问题
    • redis是基于内存的,那么它有持久化吗,aof rdb
    • aof和rdb的优缺点,你在项目中使用的哪一个
    • redis 的淘汰算法,你在哪配置淘汰算法
  • MQ
    • 为什么选择rabbitMQ, 社区活跃,高并发
    • 别的MQ也要了解,比如RocketMQ(阿里的,java开发,再次开发,并发高,分布式,出错少)
    • ActiveMQ, kafka
    • topic 和 block
    • MQ的作用,同步转异步,消除峰值
    • 如何保证数据一致性,即原子性,ack
    • 消息队列在项目中的应用
  • nginx
    • 怎么配置负载均衡
    • 怎么限流
    • 怎么使用nginx缓存
    • 为什么使用nginx,有别的替代品吗
    • nginx的压力测试,你测试过吗,能抗住多少压力
  • dubbo
    • 原理,怎么用
    • 和erueka有什么区别
    • 为什么要用dubbo,不用行不行?
    • 跨域请求的一些知识点

其他插件

  • shiro
    • 怎么做权限控制
    • 为什么使用shiro,你直接使用aop不也是一样的吗,shiro还有标签~各种扯
    • shiro的两个最重要的函数
    • 认证和授权是怎么做的
  • docker
    • 和vmware的区别
    • 你一般是怎么部署的 IDEA,直接把项目部署到docker并打包到云服务器
    • docker的好处,小,快

算法

  • 排序算法
    • 八大排序算法真的是面试宠儿
    • 最常考 快速排序 和归并排序
    • 哪些排序算法是稳定的 哪些是不稳定的
    • 堆排 也应该掌握
    • 根据遍历结果恢复树,递归
    • 二叉搜索树第k大
    • 树的和为k的路径
    • 层次遍历
    • 根据层次遍历和后序遍历恢复树
    • 镜像树
    • 树的深度
    • 是不是平衡二叉树
  • 链表
    • 反转链表
    • 链表环的入口
    • 交叉链表的交点
    • 复杂链表的复制
    • 二叉搜索树变成双向链表
  • 回溯算法
    • 走迷宫
    • 游戏通关
  • 递推算法
    • 走台阶
    • 断钢筋
    • 。。。。
  • 背包问题
    • 装最多的东西
  • 贪心算法
    • 覆盖问题
    • 时间问题

设计模式

面试中设计模式其实也是挺重要的

    • 观察者模式
    • 适配模式
    • 工厂模式
    • 等等

以上就是我在回想面试过程所能想到的一些问题,可能不够全面,仅供参考。

建议:多刷题,算法是根本,很多公司算法关是必须要过的。简历上写的项目所涉及到的知识点,必须很好的掌握,不然的话就不要往上面写。在面试的时候,如果遇到不会的问题,就说不会,不要不懂装懂,容易引起面试官的不满。

祝大家,面试顺利,早日offer。

#阿里巴巴##面经##Java工程师#
全部评论
都是自己经过回想面试过程以及身边的同学的一些面试反馈写的,希望大家看完之后,能给个赞~😁😁😁
点赞 回复 分享
发布于 2019-08-31 20:21
反手就是一个赞
点赞 回复 分享
发布于 2019-09-01 20:34
大佬牛批~
点赞 回复 分享
发布于 2019-09-01 17:13
FTP是基于TCP的,不是UDP。
点赞 回复 分享
发布于 2019-08-31 21:50
收藏+赞+评论,三连击
点赞 回复 分享
发布于 2019-08-31 21:16
赞~
点赞 回复 分享
发布于 2019-08-31 20:59
知乎上看到相同的 https://zhuanlan.zhihu.com/p/86536581  那里后发
点赞 回复 分享
发布于 2019-11-08 21:56
赞👍
点赞 回复 分享
发布于 2019-09-22 17:25
我在阿里还被问过跨域和重定向转发 还有getpost 
点赞 回复 分享
发布于 2019-09-22 09:59
我滴天,大赞
点赞 回复 分享
发布于 2019-09-21 19:45
赞👍
点赞 回复 分享
发布于 2019-09-21 16:15
很有帮助,本来一直很迷茫,不知道该怎么学习java。看完这一篇文章,有种茅塞顿开的感觉,各个知识点都涉及到了,跟着这个路线学应该可以学到一些真本事。楼主想必是一个编程大牛,膜拜,日后如果有机会能见到您,还望多多指点😁
点赞 回复 分享
发布于 2019-09-11 18:56
http://www.sos110.com/html/160/397260.html 这个文章转载了楼主的文章,不知道楼主有没有授权
点赞 回复 分享
发布于 2019-09-08 23:09
你好,根据层次遍历和后序遍历恢复树不可以吧! 例如 A          A           \        /            B    B 无法区分。
点赞 回复 分享
发布于 2019-09-04 11:56
赞!
点赞 回复 分享
发布于 2019-09-02 18:16
厉害
点赞 回复 分享
发布于 2019-09-02 13:55
我觉得牛客可以弄一个素质三连~
点赞 回复 分享
发布于 2019-09-02 13:42
毕我肥
点赞 回复 分享
发布于 2019-09-02 01:28
赞赞赞赞赞赞!
点赞 回复 分享
发布于 2019-09-01 20:22
很全,感谢!
点赞 回复 分享
发布于 2019-09-01 18:09

相关推荐

非标题党!坐标长春某双非一本 最普通的双非一本 非强双非非研究生 也不是那种大一进大厂的天赋型选手 想分享一下最平凡的代码人如何打怪升级走进大厂的故事我在大一的时候忙于谈恋爱 可以说整个大一加上大二上学期是完全荒废了的 直到大二上学期的期末考试期间才接触到java 甚至还是为了考试才想速通的搜速通课程的时候无意间看到了改变我大学轨迹的一条视频——来自优雅神的视频分享 看了他的视频之后我明白了在走一条什么样的路 进了交流群经常听群里的26届大神聊天 这时候才算打破了信息差在寒假的时候我发现我的时间有多紧迫 一个寒假的时间我也只学完了JavaWeb相关的内容 没有办到像优雅那样的实力选手一假期速通java技术栈的事迹 大二下学期我开始每天翘课在宿舍自学 每天学到凌晨几点 由于天赋一般那些八股算法我反反复复的刷 还是刷完过了一段时间就忘记 但在这期间我认识了27届的布布贯一 也认识了28届的源神暄姐 我告诉自己 没有天赋那就反复大二下的暑假时 我开始每天投简历投了一周 由于学历上的劣势仅仅获得了三家小厂的面试机会 最后也是拿到了三家小厂的offer 分别是东软 上海的一家erp小厂 还有北京的一家小厂甚至是实施助理岗 最后来到了上海开始第一段实习我的第一段实习非常简陋 那家小厂甚至加起来员工都不到十个 一个前端正式员工对接我们三个后端实习生 代码也很乱都是用ai写能跑起来就行 这段期间我一边工作一边借着上班时间学习沉淀 在9月份就提了离职简单的包装了一下实习产出后我就开始寻找下一段实习 有了一段实习之后获得的机会明显变多了 我第一次有了百度的面试机会 虽然二面被压力挂了但是也看到了一点点希望 最后进了杭州的一家做RPA的独角兽中小厂这段实习明显要正规很多 有了成熟的体系规范的代码还有可以学习的文档 这段实习里虽然几乎也都是一些dirtywork 但是相较上一段实习我还是学到了很多 也从文档里提取了一些还不错的产出十二月的时候我因为期末考试提了离职回到了学校 这个时候已经不知不觉的过了半年的实习生活了 也有了很多的感慨寒假期间其实我是有些摆烂的 背不完的八股和刷不会的算法总是影响我学习的心态 我也开始听从别人的建议尝试投了大厂的测开岗 有了这两段实习之后果然获得的面试机会多了很多最遗憾的是在面快手的时候二面面的非常顺利我一度以为自己稳了 没想到最后因为bg被排序挂了 当时我觉得可能这是这辈子离大厂最近的一次了但是我没有放弃 收到hr通知挂了的短信时一口气又去boss投满了简历 当天获得了美团的面试机会 在开学的最后一天收到了美团的offer柳暗花明又一村相比于牛客上数不尽的实力选手 我想我是最平凡的一个普通人 就连他们最基础的熟练leetcode100的原题我可能都有很多撕不出来 但我还是一路打怪升级从小厂中厂走到了大厂 从最普通的四非走到了美团 只要不放弃 总会有些希望的我的大厂路才刚刚开始 希望我的故事能给牛u们带来一些启示 与诸位共勉
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
59
485
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务