java面经~

Java找工作主要就是考察网络数据库操作系统数据结构和算法Java基础相关知识Java虚拟机Javaweb相关知识spring设计模式项目场景设计等等。针对每个方面多看书、多思考、多动手,掌握扎实了找工作就不是问题。

计算机网络
建议多看书,结合项目和实际场景去理解、分析和思考,不要死记硬背,否则面试时候面试官让灵活分析实际情况的话就蒙圈了。
推荐书籍
       网络是怎样连接的_户根勤
       TCP /IP协议族
       图解HTTP
       图解TCP/IP

数据库
建议看书结合实践,多看底层原理实现,多动手实践。会分析比较并设计几种常用数据库的实际使用场景,熟练写各种SQL语句。
推荐书籍
       高性能MySQL
       Redis设计与实现
       MySQL技术内幕InnoDB存储引擎

操作系统
原理方面随便找一本书就可以了,积累多了,做过一些项目之后会加深对操作系统的理解。

数据结构和算法
看书 刷题,刷题对于笔试和面试都是十分重要的,楼主也比较菜,毕竟跨专业。牛客网模考每次都参加了,当然前几次的模考简直惨不忍睹,惨到怀疑人生,后来静下心刷题,在牛客网刷题300多,lintcode刷题100多,还有刷了左神书里的题目,面试中遇到的手写算法几乎都写出来了。
推荐书籍
      Java数据结构和算法
      算法导论
      程序员代码面试指南

Java
Java考察的无非就是基础知识和JDK源码,基础知识要扎实,JDK源码常用的部分好好读一读,深入思考并理解一下人家的设计思想。Java虚拟机要是会调优的话是加分项。
推荐书籍:
      Java编程思想
      Java核心技术卷一卷二
      深入理解Java虚拟机
      Java并发编程实战
      Effective Java

JavaWeb
推荐书籍
      深入分析Java Web技术内幕
      大型网站技术架构
      大型网站系统与Java中间件实践
      从Paxos到Zookeeper分布式一致性原理与实践

Spring 
整体都有啥   IOC  AOP思想  bean如何初始化 生命周期  动态*** 等等细节的实现,能看源码最好。如果没时间都看完的话,建议IOC和AOP部分看看源码了解一下底层实现。

设计模式
熟悉集中常用的设计模式,尤其单例模式,各种都要会手写,线程安全的、不安全的、各种实现方式之间的区别等等。
推荐书籍
      大话设计模式

面试
面试的时候别紧张,自信从容一些,如果遇到了不会的就说不会,不要不懂装懂,真诚一些,找机会把会的都展现出来,会的问题回答的深入一点。
推荐书籍 
      王道程序员面试宝典
      Java程序员面试笔试宝典

项目
建议不管是什么项目,一定要深入去做,每个细节都要好好把握,要知道项目的扩展点,对于扩展要有设计思路。

场景设计
现在的面试都会考察一些实际场景的设计题,建议有时间的话多看看开源什么的,理解一下人家的设计思路,积累的多了,遇到这种问题也不会完全没有思路。

下面是我的面经:
百度
一面
1.自我介绍    跨专业问题  是否学过操作系统 数据结构 等等  是否有实习
2.项目介绍 
3.操作系统   信号量  管道  管程 网络也问了一些 都是基础的 
4.String 如何垃圾回收 、 String创建对象的方式  分别存储在哪里等等,都是细节问题。
5.Redis和MySQL区别  各自的应用场景
6.讲讲KMP 
7.哈希表 
8.spring源码 
9.开源中间件
10.手写算法  坐标系中一系列点,只可以向下、向上、向左走,求距离  不可以向左走 不可以改变坐标顺序
11.有什么想问的

二面
1.面试官上来就说二面不问基础和算法  只问工程设计题
2.介绍项目  问的很细很细  每部分的实现都问了 画系统架构图
3.redis出现故障怎么办   redis集群如何设计
4.分布式了解多少 CAP BASE理论等  分布式设计有的想不起来了 只记得这么多
5.主从复制设计方案
6.设计可用性和容错性都满足的系统  画图
7.写SQL  一个表行变列
8.TCP窗口
9.linux
10.http  cookie  
11.异步
12. hytrix
13.多线程hashmap执行put会发生什么 为什么  仔细说 发生在哪个环节  hashmap链表如果不采用头插***怎样  JDK1.8如何解决
14.手写代码  spring AOP实现拦截器,写出代码以及XML配置
15.full gc 调优过程 如何排错

三面  
1.手写算法 找出一个字符串中所有有效的IP地址
2.手写算法 读两个文件写到第三个中
3.手写算法 从日志中找出同一秒内 记录多少行
4.手写SQL  查一个学生表中所有成绩大于80分的全部信息并且按照id降序排序
5.有offer吗
6.写代码  socket 基于TCP CS都写
7.手写算法  实现生产者消费者模型
8.TCP拥塞控制
9.Linux命令问了一些
10.多线程 
11.异步
12.智力题  

四面    
1.手写算法  二叉树后序遍历 非递归
2.手写算法   一个数组中找出连续c个数字不超过T的组数有多少 用队列实现的  注意边界条件
3.手写算法  归并排序
4.MySQL和redis区别 redis不同数据结构的应用场景
5.主从同步设计
6.智力题  9个硬币 一个轻  如何用最少次数称重
7.MySQL有哪些索引
8.对Python的了解 Python有哪些数据结构  除了java 会c吗
9.爬虫怎么做的
10.redis掉电怎么办
11.讲项目 
12.了解图吗?有哪几种图,区别 遍历方式
13.智力题  

经理面  
问了问项目 实验室的项目   剩下的时间就是谈人生 谈理想  谈行业情况  谈offer选择 等等。。。。。


阿里巴巴  
1.自我介绍
2.项目
3.线程安全
4.集合类
5.ArrayList如何快速排序
6.排序算法有哪些?排序算法  
7.看过什么书
8.讲深入理解java虚拟机这本书
9.问问题  

腾讯  
1.愿不愿意来深圳,家是哪里的,是不是独生子女,跨专业的,愿不愿意C
对linux的了解
2.用过什么数据库
3.MySQL引擎及区别,项目用的哪个,为什么
4.innodb聚集索引底层实现
5.B 树实现,和二叉树的区别
6.数据库隔离级别,项目中用到哪个,有什么好处
7.数据库ACID
8.分布式事务CAP理论
9.知道一致性哈希吗?底层实现
10.HTTPS请求过程
11.对称加密和非对称加密区别
12.什么是虚函数
13.机械硬盘组成
14.项目中redis事务的应用 如何测试原子性的
15.HTTP 301 302区别
16.会不会前端,JavaScript闭包
17.字典树   

蘑菇街   
1.项目问了很多,很多,很细   如何学习新技术
2.Java  hashmap  hashtable  concurrenthashmap特点 区别 底层原理
3.class.forname classloader区别
4.object中hashcode和equals的区别
5.队列相关的源码有没有了解过
6.blokingqueue底层原理
7.又聊到项目

好未来
一面 
1.gc 什么时候垃圾回收  垃圾回收算法
2.手写算法   快排  求二叉树的深度   递归非递归
3.java基本数据类型  对应包装类
4.string stringbuffer stringbuilder区别
5. 常见的异常类型
只记得这些了
最后.为什么跨专业学计算机 ,操作系统 网络有没有学习过 

二面  
跨专业,为什么 如何学习
1.concurrenthashmap hashmap区别 底层  
2.前缀树
3.设计线程安全的hashmap  
4.项目问了很多 问的很细
5.最小堆得到最小元素  时间复杂度
6.gc算法有哪些  
7.闲聊了一些  为什么来好未来 
还有一些设计题,但是也想不起来了 

去哪儿网
一面:
1.手写算法,求二叉树的节点个数
2.java集合类有哪些,区别
3.MySQL有哪些存储引擎,区别
4.论文和专利很多,你觉得你写的论文和专利对工作有哪些帮助
5.为什么跨专业,如何学习

二面:
1.sleep和wait区别
2.volatile关键字
3.JVM启动时候注意哪些
4.频繁fullgc原因

hr面:
跨专业问题
1.项目如何从0到1,遇到困难如何解决
2.找工作看中企业哪些方面
3.去哪儿薪资福利介绍 培训介绍  

人人
一面  
跨专业问题
1.手写算法,用数组实现一个stack,不允许使用函数库
2.看项目,问项目  问的很细  
3.MySQL和Redis区别
4.get和post区别
5.post数据存在http什么地方
6.threadlocal底层实现
7.如何实现拦截器
8.time_wait和close_wait
9.Linux 如何查看内存使用情况 如何查看哪些端口被占用 如何查看IP等等

二面 
跨专业问题
1.项目  问的很多很细 还有项目的扩展
2.synchronized和volatile区别
3.什么是指令重排序
4.waiting和blocked区别 CPU是否占用
5.手写算法  顺时针打印矩阵
6.http状态码有哪些,501 502区别
7.项目用什么工具测试的  QPS经过测试是多少
8.cookie有哪些属性参数
9.Linux使用情况
10.项目在什么环境下搭建的 Linux or Windows

三面
1.跨专业问题 为什么跨专业  为什么要学计算机  如何自学的
2.讲项目  从头开始讲,讲项目由哪些内容,如何做的,遇到问题如何解决
3.手写算法:一个字符串将*放在左边,其他字符放在右边,不允许改变元素之前的相对位置
   写出不同思路,不断优化,空间复杂度要求O(1)  
4.手写算法:如何找出一个数组中出现次数超过数组长度一半的数,空间复杂度为O(1)列出所有可能的方案,讲出优化过程



美团
一面 
1.自我介绍
2.项目 从头到尾问了一遍 问的很细  谈了一下项目扩展和一些细节问题
3.JVM内存模型
4.堆栈 存的是啥  string创建对象存在哪里  Integer存哪 int 存哪
5.hashmap原理  resize过程
6.手写单例模式  两种方式实现线程安全的单例模式 对static的理解
7.Redis底层数据结构
8.spring事务  如何实现
9.两个事务同时操作  如何保证数据一致性
10.数据库隔离级别
11.TCP窗口是什么   一个计算TCP的题
12.HTTP
13.spring初始化哪个方法
14.bean如何加载  生命周期
15.aop  切面  动态***
16. @service如何加载的


二面  
1.项目 从头到尾  问的很细  问的很多 很多实际问题的设计  问了一些拓展 如何设计
2.Redis集群如何设计
3.长连接的设计题  
4.手写算法 求两个字符串的最长公共子串
5.HTTP  长连接
6.java内存模型
7.多线程  锁
8.数据库隔离级别  什么是脏读   MySQL默认隔离级别  什么是可重复读
9.HTTP有哪些方法  post和put区别
10.linux  vim命令
11.如何学习新技术  项目中的困难如何解决
12.对美团的了解  有什么问题



#阿里巴巴##腾讯##百度##人人网##去哪儿##美团##Java工程师#
全部评论
mark高质量面经
点赞 回复 分享
发布于 2025-08-14 16:40 江西
大佬学习能力和毅力还是很强的,我本科非计算机,读计算机研但水平还不如楼主。
点赞 回复 分享
发布于 2017-10-27 09:34
前辈,刚又读了一遍你的面经,发现一个重要的问题。这些企业面试的时候都会很具体很详细地问你的项目,这些项目应该是跟Java相关的吧?你不是不能去实习吗?那么这些项目是从哪来的呢? 有项目经历真的很重要哦,理论与实践相结合嘛。
点赞 回复 分享
发布于 2017-10-26 20:23
能问下你面的都是什么岗位吗?拿了哪几家公司的offer呢?最后去了哪家公司呢?羡慕ing......求回复~~~
点赞 回复 分享
发布于 2017-10-26 19:52
楼主本硕分别是什么专业的?实验室做的项目跟你校招求职的岗位之间有关系吗?楼主在参加校招前有多少份实习经历呢?        求回复~~~
点赞 回复 分享
发布于 2017-10-26 19:50
楼主,你们实验室放实习不
点赞 回复 分享
发布于 2017-10-26 13:17
厉害,大佬
点赞 回复 分享
发布于 2017-10-26 08:54
牛逼!
点赞 回复 分享
发布于 2017-10-26 08:27
楼主,你怎么看看书的,这么快!我一本java编程思想就看了两个月
点赞 回复 分享
发布于 2017-10-26 08:19
不过楼主列了这么多书,一年半能看完吗?实验室也有任务呢
点赞 回复 分享
发布于 2017-10-25 20:43
大神从开始转向计算机方向到参加校招,期间间隔了多长时间呀?大神本硕分别是什么专业呀?很羡慕大神跨专业就业成功,向大神学习!
点赞 回复 分享
发布于 2017-10-25 16:53
恭喜楼主,感谢分享
点赞 回复 分享
发布于 2017-10-25 11:12
恭喜楼主,感谢分享!
点赞 回复 分享
发布于 2017-10-25 11:01

相关推荐

04-26 14:36
已编辑
郑州信息科技职业学院 Java
由于高考成绩不是很理想,听取了张雪峰老师的建议,优先选了专业并且当时的想法就是选一个能赚钱的专业,于是最终选择了报了一个能收留我的有计算机专业的学校。当时听张雪峰老师说河南的学习氛围很好,所以就想去体验一下,事实雀食如张雪峰老师所说,大家都一股脑的铺在学习这条路上。可能是因为那边氛围导致的吧,我一开始想的也是卷学习卷绩点,所以大一的时候就一直在学习硬试教育的一些东西,学期结束了,排名出来的时候中上水平吧,据我了解保研的只有前5名可能会有机会,当时的心里就想着,我这成绩再卷也卷不到哪去了,并且保研也无望了,总结的说,一些事情只有真正做了才知道是不是自己所追求的。说了很多废话吧,剩下的关于学校的就长话短说了吧。大二很多专业课基本上要从早八上到晚上,但基本上我都是不去,不如自学现在新媒体技术这么发达,并且还可以学一下自己需要的技术栈,由于学校的课程原因对其他的技术栈不是很了解,所以,一心就投入在Java这个方向了,但是,Python也会学一下,这是因为加入实验室,实验室老师是做人工智能方向的缘故。现在回想,我大二当时还是学的太慢了,还有就是信息差太大了,出来工作之后才发现有些佬们已经大二就出来实习,并且八股就背的滚瓜烂熟了。只能说这里的学习氛围很好吧,走廊里都是背书刷题的声音,跟身边的同学和实验室的同学谈是否直接就业的事,他们要么都是说考研,要么对直接就业很含糊,可能是因为觉得自己学的还不够吧,我想说,学的不够就干中学呗,反正,我先迈出去这步再说。到了大三上还是没有找工作的打算,因为身边的人也都还没有这个意识吧,现在跟了身边的同事聊天才知道,我的信息差太大了。到了大三下刚开始,我才开始正式的踏上求职路,当时的信息差还是很大的,根本就不敢碰瓷大厂,想着有一个公司能要再说吧,并且地域也限制的很死,只想着在本地找一下,因为怕学校找事(我想这是学校一贯操作了),在本地吧,他们大多数都是接受的线下面,一开始面了一个,可能自己比较摆也很悲观,就显得我很差吧,hr面完就没后续了,最终终于有一个面,并且也展示出自己的自信和对专业的理解了,最后,我也没想着这么多背调公司呀,当个备选什么的就直接去了。也算是我的第一家正式的公司吧(之前都是线上的码农兼职),干多了就发现,这个公司压根学不到东西,并且薪资低的,因为我是第一个进来的计算机实习生,有一个同事干了两三年的吧,带着我做的时候是真能学到东西,但是,最后那个同事离职了,我就只能和学艺术的老板直接汇报项目进度,一个学艺术的来指导我这个科班出身的就很离谱的好吧。最后,我也离职了,也跟前同事聊了很久,她说我是她见过大三就能学到这程度,已经超过很多人了,并且她当时在的时候还说我是内定能转正的。并且还说我真的可以去考研。我也仔细思考了一下,我决定让自己沉淀一下再出发吧,先备考了软件设计师,然后期末考,大三暑期的时候就充实自己的简历,并且也认识了一个某东的老哥,也用了内推码,教我了怎么写好简历量化成果之类的,总之,很感谢一路走来帮助我的人吧,并且我在边充实自己的同时也在边投递简历,但当时卡的也很死,要选base地在河南附近的,不像现在全国可飞。面了很多base地在学校附近的,然后,还有一个北京的py和杭州的java,最终就这两个地方给了offer,但是都是实习转正的,不是秋招offer,因为觉得Java的太卷了,然后,面试的时候也会感觉压力很大,所以就把杭州的那个拒了,去了北京的,北京是免费住的房子(三个月这是伏笔),当时觉得环境很好,但是合租室友的作息跟自己的作息不一样就很不习惯,于是,我就想着要是三个月后我一定要找一个单间的哪怕破一点。北京这个公司吧就很像国企的感觉,早九晚五,当月发当月工资,并且干的活接触的数据量都不是很大,就是干了很多杂活,并且mentor和部门的领导都不是技术出身,所以,我能学到的东西少之又少,但是吧,学习是自己的事,而且这部门不是很忙对于实习生来说,我完全可以学自己的东西(前提是不被发现)。到最后这个部门的氛围就很微妙,我遇到不会的问他们我应该怎么做的时候,他们说让我自己想,我当时就想说,神人一个,啥都不说让我自己干,干出来又不满意,你说你让我干py的东西你不会我就不说啥了,让我干无关代码的东西,让我调研项目应该做些什么内容,现在回想都是泪呀,我就这样被欺压的过完了三个月,最后免费住的地方也到期了,伏笔来了,最后,找我谈话说你技术可以了能看出来,因为你也自己独立完成了消息通知那一块内容嘛,但是,由于我们部门干的活比较杂并且我也缺少一些电力相关的一些知识,所以,觉得不合适。(OS:其实我对每一份工作都是真心换真心的,并且这些电力知识我也知道我有一点欠缺所以我也有自己再学习,你们啥也不教我,最后把屎盆子把我头上扣)最后,回到了学校,心态也发生了变化,想着做啥都不如找一个稳定的工作重要,想着回家沉淀吧,少年终有出头日。但是,计划赶不上变化,之前那个同事,内推了我去她现在的公司,并且是做AI应用的也是我想接触的,并且还是与我上家的业务场景类似的,真的感谢那个同事,俗话说:千里马常有而伯乐不常有。并且那里的部门领导也很好,并且说我虽然不是电力相关出身的,但是能做的这样已经很不错了,所以DDDD,由于各种不可抗力因素吧,还是想找一个离家近,然后不是很像小作坊的感觉(这个公司虽然比较小,但是比之前那个大的公司的氛围和待遇一点都不差的好吧甚至更好)。最终,在学校也呆了一个月吧,也陆陆续续面了一个月有一个C厂的面答的都挺好直接就谈薪了,但是风评不好还是保命要紧,还有各种的中小厂面吧,但感觉都不是自己想要的,只是想刷刷面试经验吧(这是某东哥告诉我的,与其一直改简历不如去多面)。最后,在校期间面了一个比较合适的某鸦智能,一直推进到了HR面,但是最后被横向了,开始复盘,被横向了属实是没招了,经历了这么多大风大浪什么场面没见过。过年期间,求职路线关闭,把自己缺少的技术栈和简历中的项目业务理清楚说明白。年过完就要开始加入找工作大军中了,把节前没面完的先面了,节后一开始就是某鸟的HRG面,聊的就很憋屈的感觉,问我技术方面的,说我说的很像AI的(我心想跟你说具体的细节你又说我不想听技术的,说的比较宽泛浅显说我AI)。最后,反正体验感不是很好的结束了吧。说一个星期等通知,等了两个星期才说是通过的(我认为是排名靠前的那些人没去,顺位到我了)。那你既然这样说了,那我就接受吧。还没入职就问我要身份证信息要这要那的,最后都给过去了,说HC调整,要重新review,又又又一次被恶心到了。后面就是陆续的沉淀面试等,我当时的重心已经完全的想着私企没人要,就去试试考公和考央国企了,毕竟我的履历不看学历的话放到电网当中还是可以的。私企的话有一个外企洋里洋气的说话,问我怎么口语这么好?我说这叫智取,宝贝。虽然这个tek外企过了,但是还有一个openday要去线下,来回的衣食住行不是很方便也不是很想去所以就拒绝了没去。后来就收到了,国网网申通过的通知,说实话,我之前问了很多我们学校历年有没有考央国企之类的案例,很显然都不知道,也可以说少之又少吧,于是我就奔赴京城进京赶考,唉,时间不太合适就想着算了吧,再等等,好事多磨,宁缺毋滥吧。金三银四终于等来了面试的机会,这个岗位我只能说我不是很熟悉,但是语言这东西吧都是相通的,重要的是我要把其中的内核搞懂,梳理清楚业务逻辑。最终,来到了这家公司,目前来说是我遇到过最好的了,能有hc且不是要通过实习评估的那种,并且合同期限是三年的,并且是12%的公积金。我认为这就是我所遇到的最好的了。希望能真心换真心吧,不再把我当创口贴/路边一条了,并且也遇到了很多优秀的同事。总的来说,就是要是能重来我要选李白。我肯定会打破这些信息差,后悔知道的太晚,并且跟优秀的人聊天说话真的可以学到很多东西,之前上文提到的贵人就不说了,说说最近的,他是跟我一届,学校后缀甚至不如我的后缀,但是真正了解的才会知道真是佬👍,他跟我找工作的时间线差不多,但是他在中大厂甚至大厂都呆过,因为跟他聊了才知道我当时的信息差有多大,并且毅力也是我甚至…都没有的。并且也听说了他们学校找工作的氛围很好,不像我阿巴阿巴阿巴,只有考研等相关的一些。并且说的一些观点都是很认同的。总之,希望能在这好好的吧,我真的不想经历大起大落了。经历了,打招呼挂,简历挂,一面挂,HR面挂,offer挂的,现在的心态已经放宽了很多了,但是难过还是有的,希望这家公司诚不欺我吧。也祝大家遇到自己的梦中情厂
选择和努力,哪个更重要?
点赞 评论 收藏
分享
评论
20
243
分享

创作者周榜

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