大厂面经:网易美团头条百度+Java学习路线

首先自我介绍一下,南京渣硕一枚,秋招主要投递JAVA后台岗位,面过以下公司:网易+美团+头条+百度+华为+中兴,拿下了网易和中兴提前批offer,华为依旧泡池子,美团四面挂,头条三面挂,百度今天下午二面没去了。其他一些公司收到了面试,没去参加了。

暑期在上海某互联网大数据实习一段时间,后因个人兴趣问题不在大数据这块和提前准备秋招的想法,干了一个月跑路。

最后,猪场是最想去的,没有之一。

网易三面:(内推)

网易整个过程来说,算对得起自己长期的准备。面试之前刷了一些面试大佬的面经,特此感谢,挺有用的。

一面:

一上来,面试官没让我自我介绍,直接开始问题目。

java基本类型和占用字节数,回答八种,也特意提到boolean类型,1或者4个字节,为什么?

阅读过哪些集合源码?重点提了hashmap的哈希算法

Innodb的索引实现

jdk1.8和jdk1.9的新特性。听到这个楼主一脸懵逼,1.9根本不会,只能把1.8的一些新特性结合具体例子跟他讲了一下,比较满意。

JVM内存结构

解释下装饰器模式,回答不会,以前这个的确没准备

动态原理和实现,画出模式UML。

我说不会画,然后面试官挺好的,说你是非计算机专业的,那就不用画了,那就在纸上写一个过程吧。画完以后,看着手上的表,说20分钟了,到点了,于是结束。出去等hr通知二面。

二面:

我的项目做的是一个秒杀系统设计,面试官问的偏项目多,面试官胖胖的,挺可爱,虽然不爱说话。

谈谈你对redis的理解。(提到一个redis热启动,没听过,一脸懵逼。)

秒杀过程中怎么保证redis缓存和数据库的一致性?

多个用户请求同时第一次访问空的redis,怎么样不使redis崩溃?

SpringMVC 有几个IOC容器?由什么决定?(有点懵,特意反复跟面试官确认这个问题,在IOC概念饶了一圈又一圈,回答不好。)

动态***实现,说一下过程。

不同的面试官,但是也看了一下表,说20分钟到点了,心里一慌,感觉GG,对我不感兴趣。

hr面:

这是我面过的最刁钻的hr面了,男,全程一直看我的眼睛,下了一些套。边自我介绍,边翻我的简历。全程40分钟,前两轮技术面总和。

兴趣爱好(回答爬山游泳)

家庭情况,女票背景,交流生背景。

你觉得父母对你最有的品质是什么?举个例子。(我这里吹大了)

为什么报互联网产品这个hc?你了解哪些产品?(回答说不太清楚,想扇自己几个耳光)

非计算机专业为啥来搞开发?

为什么选择网易,其他公司为什么不考虑?(吹过了,被hr怼,说我大空)

选择工作时,你考虑哪些因素,给地点薪资技术等因素排名

实习收获最大的,举个case?平时怎么解决问题的?

从小到大最坚持的一件事。(我回答学习,是的,我是**)

兴趣爱好,重复一遍(此处有套,看我是不是说假话),你说爬山,多大频率,去哪儿爬?

现在面试哪些公?offer收割情况?

你有什么问题要问我的么?

网易面试总结:

9.2拿到内推offer,当时心情五味杂陈,晚上彻夜难眠。

网易刷了一些面经,结合自己的面试经历来看。技术上面,一轮基本偏JDK基础,如果基础不好,绝对过不了。然后很喜欢问Spring类框架,一些特性和源码也问的挺深,最后就是设计模式了,网络方面也有些设计。算法撸得比较少,就算撸也偏简单的那种。

美团四面:(正式秋招)

一面:(50分钟)

你对集合那么熟悉,看过哪些源码?HashMap,HashTable,ConcurrentHashMap等等

讲到ArrayList,讲一下初始长度,扩容机制。

说一下ArrayList和LinkedList区别,然后讲了大量数据下在LinkedList前1/10处插入效率高,在ArrayList中部以及后部插入效率高,解释原因。

我故意引线程安全的CopyOnWriteArrayList,然后把源码吹了一下。

来,给你看例子:

private HashMap<Integer,Integer> map = new HashMap<>();
线程一:map.put(1,2);  线程二: map.put(1,3);
两个线程去执行一段代码
if(map.get(1) == 2) 输出...
if(map.get(1) == 3) 输出..

问线程一和线程二执行完上述完会出现什么问题?

我回答说可能出现覆盖,跟执行顺序有关系,怎么解决,我说map用锁修饰?可以,有没有其他的,再想一想,想一想??

然后想了好久,没想出来,他说ThreadLcoal你没听过么?我豁然开朗,于是开始拼命解释原理实现、可能导致的内存泄露问题,挽救路线完成。

来,做些题吧。心慌,看他从桌边的一坨纸中抽出一张,两个题

(1)两张表,考连接关系,写SQL语句。

我把sum写错成了count,尴尬,SQL太长肯定错的,可是面试官没细看了,暗喜。

(2)N个数中求最小的M个数,用快排的partion思想,时间复杂度O(n)。

跟面试官讲解了三遍,他还是没听懂,说回头再看。

二面:

疯狂对着我的项目进行提问。

具体的秒杀细节怎么做的?秒杀的核心技术在哪儿?你怎么保证的?

超卖怎么解决?讲一讲spring的事务特性

来,谈一谈你的redis理解,为什么使用prostuff,不用传统的序列化?

来,继续撸算法吧。给一个string类型数字字符串,比如“1026”,范围0000-9999,打印繁体读法string-----"壹仟零贰什陆”

看你对多并发熟悉是吧,来,多个线程同时去访问同一个代码块,我想知道最后一个线程什么时候执行完,怎么做。答CountDownLatch。

三面:

之前同学都是当天只有二面,第二天再继续面,我懵逼了,刚出来了又被拉进去面,我说我想去上个厕所,面试官微笑,两分钟解决。

进去面试官在电脑不停敲字,说,来给你出一道算法吧,很简单,很容易,我心一暖。

定义两个字符串相等的规则:(1)大小写不敏感;(2)s1中的字符中s2中必须有;(3)s2中的字符中s1中必须有。判断两个字符串是否相等。

很快写出来了,没借助空间,看完以后,让我用一个map实现,O(N)的时间复杂度,balabala。

你实习的这个部门,主要负责哪一块?你自己做的哪一块?详细介绍一下?

为什么不愿意搞大数据,转而搞java开发?

以后想留哪儿呀?我说南京和上海都可以,反过来问我,南京纯互联网少吧,特意提了下途牛,我吹了一波新美大较途牛的优势。

精彩的来了,他问我:那你刚刚为什么说南京也可以?我..我...我......开始挽救,挽救失败。

有没有问我的?

我说我有时候用美团app发现输入具体的位置时,周围并没有显示我想要找到的店。问完这个就超级后悔了。

开始尬聊模式,我不停在解释不该提这种问题,并没有什么意思,面试官一直说没关系,不是我们部门做的,可能他们有bug或者没有考虑到的。

hr面:

又是一个男hr,全程微笑,呵呵哒。

来,小伙子做个自我介绍。

目前手头拿到的哪些offer。

手头的不错呀,为什么选择来上海?你知道新美大现在市值么?

你最大的缺点和优点?我回答说可能有点急性子,受不了周围的人拖节奏。

两个问题也没回答好,感觉贼难受:

(1)你的同事就是那种很拖的人,你怎么解决?不要说沟通,沟通无效

(2)你的老大就是那种很拖的人,你怎么解决?不要说沟通,沟通无效

昨晚出了结果,周围进hr的好多都收到了offer,心里有点不开森,的确情商有点低,仍需学习。

头条三面:(正式秋招)

一面:(26分钟)

写了单例,具体解释了volatile禁止指令排序机制和对象new过程。

数组最长递减子序列,写了个动态规划,比较简单。

数据库事务隔离级别

进程通信方式

一面就26分钟,答得还可以,小哥让我等一等,后面继续二面,接着视频面。

二面:(60分钟)

秒杀商品的库存放在哪里,如何保证redis和DB的一致性

多个线程同时访问为空的redis,怎么解决(这两个问题跟网易一模一样)

非递减序列找到第一个大于x的位置,时间复杂度要求lgN(二分)

一个完全由数字组成的字符串,求字符序列子串可以被k整除的个数,要求O(N),有点难度,没A全

cookie和session区别

get和post区别

网址中输入URL,一系列过程

状态码,知道的讲一下

一个CPU单核,同时只能处理一个指令,是或否?

一个CPU 8核,最多同时只能处理8条指令,是或否?

最后,小哥问我JAVA虚拟机那一块知识,他不懂,最近面好多人都是搞JAVA的,临时学习一下。于是我开始背课文了。

二面一个小时,晚上接到hr电话,说二面过了,欣喜万分。

三面:(80分钟)

锁在操作系统层面实现原理(回答那么多,其实面试官的意思是想让我回答原子性三个字。。。)

多线程和多进程的使用场景

CAS原理,写了个底层源码

mac地址和ip地址,瞎扯了写

IOS7层变成为什么变成5层,为什么要分层?

给定一个数组(全为0~9的数字),可能有重复,挑出数字自由组合,给定数k,找最小的大于k的数(回溯),没撸完,这个是败笔,撸了半个小时,跟面试官讨论了好久,面试官也提示我用回溯,可是我太菜不会呀。

面完半个小时后,hr来电话说不好意思,GG,不过收到网易通过短信,于是无所谓。

百度

一面:(今天下午本来2:00二面,后面心想对上海不是很感冒,所以放弃了)

百度的小哥真的超级好的。在酒店的一个房间,我刚刚推开门,就站起来迎接我,微笑,很舒服。下面面经。自我介绍。

你说你熟悉Java基础,那讲一讲int与Integer的区别。我特意解释了拆箱装箱、Integer的一些源码、泛型的应用。

JVM回收机制,从判断对象死亡、GC Roots、Stop the World、回收算法优缺点讲起,提到引用计数弊端。

JVM中给对象赋值为null,一定会被回收么?举个case,讲到了内存泄露。

进程中文件写怎么保证安全?我操作系统那块不熟,就提了JAVA中的ReadWritelock底层实现。

好了,来撸个算法。找到字符串中第一个出现次数只有一次的字母,比如abcdab,输出c,两种方法

海量数据题两个:

(1)两个文件,分别存放50亿个URL,每个URL60个字节,内存4G,找两个文件并集。

(2)一个文件,存放45亿已排好序的32位int整数,找出一个出现次数大于一次的整数,找出一个就行。经过提示回答出来了。

智力题:一个袋子100个球,每次只能取1-5个,甲乙两个人抽,谁抽到最后一个谁赢,甲先抽,怎么保证甲赢。

三次握手中为什么不是两次?为什么不是四次?

网站输入一网址过程,具体讲一下DNS解析过程。

get和post区别,post一定是安全的么?怎么解决登录信息被截取?

淘宝的登录就是get方式,怎么保证安全?

再次提一下,百度的小哥人真的很好,走的时候特意站起来送我走,特别感谢。不去二面现在不后悔。

华为二面(优招)

一面:之前问周围同学的都是项目,之前在上海实习回奔到南京,于是也就没怎么准备基础,项目准备了一些。然而,事实相反。

HashMap和Hashtable区别,我特意提了哈希算法不一样,各自的算法原理,提问:为什么不一样?Hashtable为什么不用HashMap的?

HashMap1.8优化在哪些方面?

写了个单例模式。好久没写了有点忘了,双重锁检查写错了两个地方,被指出来了,尴尬

写了个二分查找。面试官问我,你确定数组就是排序的么(我心里无语),数组非空判断不用(我服)?

用过哪些锁呀?synchronized和reentrantLock区别

讲一讲reentrantLock底层啥样子,实现api

楼主嘴贱,扯了一下ThreadLocal,疯狂问这个,底层实现我还可以讲一下,问一下使用背景,怎么使用?有点懵,忘了

CopyOnWriteArrayList底层实现

JVM的回收算法,当我背到一半后,打断了,说我知道你是为了面试背背而已,过几天忘了

major gc和full gc的区别,我脑抽,说反了,被鄙视了

聊了这么久虚拟机,你调过优吗?怎么调的。。。一脸懵逼

二面:(20分钟)

一面基础没有回答好,二面面试官对我也不感兴趣的样子。

自我介绍后,拿着我的简历,说这上面有三个项目,来,挑一个你觉得最牛逼的项目讲一讲

画画具体结构和功能模块。我在画时他在电脑端不停打字,然后基本没看我写的。

怎么看待华为?

你选择华为的理由是啥?最看重华为的哪一点?

你有什么想问我的?

面完以后,心里很虚。前一天周围有同学在二面面试官直接谈薪资的那种。我觉得我可能遇到了一个假的面试官,java是真心的很懂啊,而且问的都挺深,这件事告诉我别想钻空子,该来的还是要来的,那就要在来之前把所有的裤子穿好。

ps:华为今年有点厉害,面试结果都在池子里泡了两个月多了,啥时候给个准信?

中兴两面(提前批)

参加的云计算提前批,感觉面试组织的有点乱,我是先进行的二面(两个技术官),再进行的一面。加起来20分钟。

技术的问的比较少,也就介绍一下项目,然后对加班的看法。有两个奇葩问题:

(1)如果华为和中兴同时给你发offer了,你愿意去哪家?

pa:周围有同学被问,网易和中兴,阿里和中兴,你选哪家?为什么?考验自己说假话的能力到了,不要舔的过分,不要真的深刻

(2)如果项目中某个接口模块是另一个部门设计的,出现了问题,而另一个部门因为事情有轻重没有时间解决,你怎么解决?

后面部门老大说过了,然后全程电话介绍他们的产品,我加起来说话的时候不超过一分钟。加了hr微信。

最后总结一下学习JAVA的一些技术历程,纯属个人拙见,不同看法求轻拍~

JAVA语言基础:

java基本类型、引用类型、多态底层、泛型底层、反射机制等

常见的集合类1.7/1.8版本源码

推荐书籍:Java编程思想,Effective JAVA(深)

多线程并发编程:

concurrent包源码必看,有以下几点:

线程池,阻塞队列,非阻塞队列

各种锁的使用,优化

原子类Atomic

并发安全容器

推荐书籍:Java高并发程序设计(浅),Java并发编程实战(深)

Java虚拟机JVM:

Java内存区域,OOM

垃圾回收算法,垃圾收集器

类加载机制,类加载器

虚拟机字节码执行引擎(重写重载底层等)

Java内存模型JMM

推荐书籍:深入了解Java虚拟机

数据结构与算法:

常见的栈、堆、链表、二叉树、B/B+树、堆(图问的比较少)

常见的排序算法:冒泡、选择、插入、快排、堆排序、归并(后三个核心函数熟练)(希尔、拓扑基本不问),最坏最差情况

推荐书籍:大话数据结构(语言不是问题)

刷题:剑指offer强烈推荐(面试好多原题),左程云算法牛人的书--程序员代码面试指南,有时间可以去刷leetcode的题,hard题略过

web框架推荐学习spring,这个网易阿里美团都问的贼多,话说你今天看了spring源码了吗?

设计模式那么多种,推荐熟悉以下几种就可以:单例、模式、工厂(三种)、适配器、装饰器、策略、观察者等

TCP/IP和操作系统楼主不精通,后续还需要深入了解。

最后给个建议,遇到问题不懂的知识点多去找找牛逼的博客,看完了自己一定要吸收,写在博客上面,后面面试拿出来吹吹比还是很有用的~

原文链接: https://www.nowcoder.com/discuss/48445?type=2&order=4&pos=7&page=1 文源网络,仅供学习之用,如有侵权,联系删除。

我将优质的技术文章和经验总结都汇集在了我的公众号【Java圈子】里。

为方便大家学习,我整理了一套学习资料,涵盖Java虚拟机、spring框架、Java线程、数据结构、设计模式等等,免费提供给热爱Java的同学! 更有学习交流群,多交流问题才能更快进步~

file

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鱼皮的Java学习路线是一条全面贴心的自学编程指南,旨在帮助程序员入门并通关大厂。这个学习路线包括了以下内容: 1. 基础框架:包括Java基础、JavaWeb、MySQL等基础知识。 2. 数据库:学习使用MySQL进行数据存储和管理。 3. 中间件:学习使用Maven/Gradle进行项目构建,以及使用Redis进行缓存。 4. 微服务:学习使用Spring Boot和Spring Cloud进行微服务开发。 5. 消息队列:学习使用RabbitMQ进行消息传递和处理。 6. 容器:学习使用Docker和Kubernetes进行容器化部署和管理。 7. 数据结构与算法:学习力扣算法题目,提升编程能力。 8. Linux:学习Linux操作系统的基本知识和使用方法。 9. 网关:学习使用Nginx作为网关进行负载均衡和反向代理。 10. CI/CD:学习使用持续集成/持续交付工具进行自动化部署。 11. 计算机网络和操作系统:学习计算机网络和操作系统的基本原理。 12. 接口文档和接口测试:学习使用Swagger生成接口文档,以及使用Postman进行接口测试。 13. 并发编程:学习并发编程的基本概念和技术。 14. 设计模式:学习常用的设计模式,提高代码的可维护性和可扩展性。 15. 网络编程:学习使用Netty进行网络编程。 16. 分布式和云原生:学习分布式系统的设计和云原生应用的开发。 这个学习路线涵盖了Java开发的各个方面,从基础知识到高级技术都有所涉及,是一个非常全面的学习指南。你可以关注程序员鱼皮并访问他的编程导航网站获取更详细的学习资源和指导。 [2<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [java学习路线](https://blog.csdn.net/weixin_49337333/article/details/121169853)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [java后端学习路线整理](https://blog.csdn.net/weixin_44897349/article/details/128434408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值