Java最全腾讯Java面试都挂在二面,分享下失败经验+傻傻的面试经历,Java面试真题解析火爆全网

最后

文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

可能平时看我文章的人会发现,我是喜欢把这些技术一点点推出来,有逻辑着连起来的,这样说出来会特别舒服,不过我这次面试的时候,连不起来的,归根到底就是,没有准备,头脑觉得自己都懂,但是不意味着讲的出来,所以我在这里是建议各位,对于那些高频的面试题,自己最后尝试着口头去表述一下,或者文字书写一下,要是你来回答,你会怎么说?

2、TCP 和 UTP 有什么区别?

我在回答这道题的时候,也是非常简单着回答他们的区别,例如一个面向连接一个非面向连接,一个可靠一个非可靠,非常简单就答完的。

不过这道题是一个高频题目,按上面的那个回答,就算回答出来,我觉得也是一点优势都没有。因为这些简单的区别,99%的人都懂,我觉得我们应该再往深入回答,例如TCP有流量控制,拥塞控制,面向流以及基于这些区别,他们的使用场景等等。

不过我并没有回答,不是我不知道,而是我想假装不说,等着他来问,因为我听说面试官都会一直往深问到你不会为止,然而现实是他并没有问,换话题了。感觉自己错过了一些表现的机会。

这里我想说的就是:如果你知道,你可以多说一点,千万别像我这么傻,等着别人来问。

3、写个快速排序

和算法有关的,我觉得自己还好,写的虽然不是特别快,但感觉自己写的还好,无论是从代码的排版(因为这个一般都是在笔记本写的,不可能给你IDE),以及代码的简便程度,我觉得都不错,这里我想说的就是,自己平时写代码的时候,一定要注意排版,别老是依靠IDE给你一键排版。

虽然我已经写出来了,不过他之后让我说下快速排序的步骤,我老实说了,不过我觉得,这些题都太简单,如果面试官的很基础,你也答的很基础,我觉得没啥优势,对于快速排序,我本来想补充的,例如对中轴的选择问题,与其他排序算法的一些比较,应用场景等,不过,我是想着等他来问我……

按照我这样写文章的话,估计得上万字,我下面简便说下就行了。如果你们感兴趣我这么啰嗦的话,下次我再来吐槽说说我回答的不够好的地方。

4、一条SQL执行的很慢的原因?(之前写过文章,建议看看)

5、MySQL有哪些存储引擎以及他们之间的区别(我其他引擎忘了名字叫啥)

6、如何查看SQL语句的执行状态,知道这条命令吗?(我当时MySQL其实几乎没学,很多都不知道)

7、qq用的是tcp还是udp(两种都有涉及)

8、说说jvm内存模型(其实并没有JVM内存模型,只有Java内存模型以及JVM内存结构,你要问清楚是哪个再答,我当时是答了Java内存模型,面试官一面懵逼)

9、JVM内存结构中有栈堆等,为啥要用栈这种数据结构?(主要是操作简便,快速)

10、说说垃圾回收?(老年代,新生代,永生代的区别等,各自使用的回收算法,新生代又分eden和survivor区等)

11、说说aop和ioc

12、大致看过哪些书?有逛技术论坛的习惯吗?说几个你常见的技术博客平台?有去逛过国外的技术博客吗?看的懂文档吗?

总体上一面比较简单,面试官没有深入问,不过问的很广,这里问一些,那里问一下。感觉自己答的还好,也顺利过了。第一次面试收获还是挺大。

1、对于懂的一定要多说,可以延伸,只要面试官不打断你的回答。

2、对于高频面试题,一定要自己模拟说一下,而且这些题一般不难,一定要多延伸,不然没啥优势。

3、感觉以后面试不那么紧张了,也就这么回事。

腾讯Java面试都挂在二面,分享下失败经验+傻傻的面试经历

提前提二面

几天后收到复试通知,二面是电话面,二面操作系统和Linux问的有点多,我二面感觉自己就挂在Linux上,我Linux不大懂,被问了好几个个基础的问题都不懂,自己也是醉了,感觉自己应该和面试官说一下我Linux还没学。操作系统很多细节也忘了,说说二面的面试题吧。

1、说下四次挥手,什么时候会出现time_wait状态?(我扯了一下,面试结束后,发现自己弄错了,真想给自己一巴掌,主要是,其实我对三次握手和四次挥手没去准备过,虽然看过挺多文章,但是具体的没记住,凉凉)

2、红黑树知道吗?说说,为啥有了平衡树还需要红黑树?(平衡树太严格,插入很容易打破平衡,经常需要调整,而红黑树是一种折中方案……)

3、红黑树是如何保证查找效率不会太低下的?(我后面再写一篇关于红黑树,B+树,平衡树这些的文章吧,现在先给出这些遇到过的面试题)

4、红黑树在调整的时候,不是会用到左旋右旋吗?说说会不会出现无限左旋右旋的情况,如果不会,那最多旋转几次?

5、为什么索引能加快查找效率?

6、说说B+树是怎么分裂、合并的,知道具体步骤逻辑吗?

7、你项目用到redis,知道跳跃表吗?说说他是怎么实现的,查找时间复杂度?

数据结构这部分我觉得自己答的还行,几乎都答出来的,不过下面的Linux和操作系统有点惨,怪自己没准备,不过面试就是一个查漏补缺的过程吧。

8、Linux的proc目录有啥用?(忘了,,,,)

9、怎么查看端口的状态?(有条啥命令来着的,忘了)

10、怎么查看某个进程的状态?(也忘了,呵呵,,,,,)

我简历上是写着熟悉Linux常用命令,然而一个也没答出来,尴尬啊,其实我会用的是那些 ls, cp, mkdir, tar等常用命令,对于线程、网络相关的都不会,感觉危险了,这么基础的问题都不会。

11、说说什么是进程,进程包括哪些数据?进程切换的过程是怎么样的?

12、如果想要让多个线程执行到某个点,都达到之后再继续执行,可以用java的那些类来实现?(CountDownLatch和CyclicBarrier这两个)

13、什么是反射?反射有啥用?

14、说说垃圾回收,jvm是如何知道这个对象可以回收的?计数法有啥问题?如果我们想要指定某种垃圾回收算法,该怎么设置?

15说说aop(这个问的刁难了,我该说的都说),他说,那我也可以通过自己配置文件来实现这种切面啊,为啥就要用AOP呢?(他问的问题就相当于,我用servlet也能使用实现一个网站啊,为啥要用spring这些框架呢?我当时应该要吹一波spring中AOP带来的好处的,不过我没说,感觉自己应该吹一下的)

15、接着是问了我那个高并发秒杀系统的项目,说了里面的线程安全问题,然后我这个项目早忘光了,自己也没准备,代码我不是自己敲的,直接看视频的。自己没做过什么项目,就充当了,结果面试官问了一下线程的问题,我一直没get到点,搞的自己也好懵,最后才知道他说的是啥,不过项目这块答的也不好,主要自己也没动手弄过,又是去年快速看视频学的。

总体上,二面除了Linux答的非常非常不好,还有四次挥手说错了,线程包括哪些数据说的也不全之外,以及项目感觉有点被认为不是我做的之后,其它感觉还好。不过。一个多星期后,结果出来,挂了。

不过我也不意外,知道自己有很多需要补的,面试有时运气不好,可能连续问到好几个不好的,估计就得挂了,不过这没方法,最好的做法就是面试过后把自己不足的补上来。

腾讯Java面试都挂在二面,分享下失败经验+傻傻的面试经历

常规网申一面

常规网申的笔试题中是20道选择题+3道编程题,过几天就收到面试通知了,有了前面两次之后的面试经验之后,也了解到腾讯是特别喜欢问操作系统+计算机网络+Linux的,于是我把这方面的高频面试题都好好准备了,Linux 进程等相关都准备了,操作系统也大致准备了,下面说说这次涉及到的面试题。

1、说说网络建立连接之后是怎么关闭的(其实就是四次挥手,我详细说了,之前写过文章)。如果出现大量time_wait 状态的连接是怎么回事?(我说了第四次挥手出现了丢包、超时等),假如不会出现丢包、超时等,网络非常流畅呢?(说了短连接导致的)那怎么解决?(我说了限制最大连接,用队列来缓冲),问我还有其他方法吗?(我不大知道,好像面试官不大满意我的回答。不过最好的做法应该是修改 time_wait 等待的最大之间,把时间改小一点)。

2、说说IO阻塞与非阻塞是什么?各自有啥好处?知道多路复用吗?了解过 select 吗?说说他与 epoll 的区别。

我知道的也不是很深入,就常规答法,他问啥就答啥。这里我要说一下,我觉得很多人可能混淆了阻塞、非阻塞与异步、同步的概念。我实话,我觉得自己已经理解了,结果我看了好几篇文章,发现自己反而不懂了,懵了,总觉得缺了点什么影响我对阻塞非阻塞与异步同步的理解,说实话,我看了大概有10篇文章,有80%我觉得都没有说清楚阻塞非阻塞与异步同步的本质区别。这会影响你对同步阻塞,同步非阻塞,异步阻塞,异步非阻塞的理解。有时间我再来写一篇文章说说他们的区别,相信看了你就一定懂了。

3、知道乐观锁吗?说说他们适合应用的情景。

4、说说自适应锁,与其他锁相比,他的优缺点,什么情况下你觉得可以用自适应锁?(之前写过几种锁的文章,不懂的建议看)

5、你平时开发是在Linux上开发的吗?(我靠,Linux上开发??那不是得对Linux上很熟悉?我虽然准备了Linux面试相关,可是这Linux上开发压根没体验过啊,我马上怂了,马上说没有,并且还加了我对Linux不熟,这门课刚学没几天。之后他就不问了Linux了,然后接下来我就扎心了)

6、那你平时就是在windows下开发了,那如果你平时项目要上线,这个项目的性能突然很差,你是怎么定位问题的?(我靠,在下从来没有上线过项目,连用心写过项目都没有,这下完,我迟疑了一会),他补充说,例如你可以通过观察你电脑的cup, 内存,IO 的指标来进行行定位,可以分析下吗?(可以打开任务管理器来查看cup等的运行情况,然后……其实我没有上线过项目,也没有这样的经历),他说没事,假如遇到这种情况你会怎么分析?(我下面说一下我是怎么扯的)

心想,扎心了,其实我不大知道究竟要分析啥,好吧不管三七二十一了,然后我开始扯了:

1、如果cup一直很高而其他地方内存,IO很低的话,那很有可能项目里面有某些东西在疯狂运行,但却没啥用,很有可能就是自己设计了乐观锁,但竞争的线程太多,导致一直做无用功。

2、如果磁盘操作很高,但cup很低,这是意味着项目一直在做IO操作,很有可能是SQL语句写的不好,导致扫描了大量的磁盘,然后我就针对SQL语句的问题开始扯了,例如没有用上索引啊,选错索引啊,扯了一大堆,哈哈。(心想,舒服,刚好写过sql语句执行的很慢的原因有哪些)。

7、说说进程与线程的区别?进程有哪些通信方式,(我说了共享内存,消息队列,管道,信号量,套接字,信号驱动),他问还有吗?(我说其他的不知道了),描述下这些具体的通信方式(我有些具体的给忘了,大致描述了几个)

8、说说快速排序的思想,删除单链表倒数第二个节点,你会怎么做?

9、了解MySQL事务吗?说说ACID是啥(我靠,我对事务的隔离理解还强,研究过隔离是如何实现的,然而,,,我突然短路,ACID的D忘了啥,就像你高中那会对一首古诗背的很熟,然后突然就忘了哪句,心里有点扎心),那你具体说说ACID是啥(原子性是,,,隔离性是,,,,一致性?????,我靠,我觉得自己对这四大特性很理解,感觉看名字就知道是啥了,然后说到一致性的时候,我自己的心中产生了疑问,感觉自己并没有真正意义上理解了一致性,然后我没说出来)

心中那个苦,一致性都没说出来,其实我是可以说出来的,但是我总觉得缺了点什么,就像你看了几篇文章觉得自己懂了,结果让你在看几篇文章,你感觉自己有点醒悟了,然后突然发现自己并没有真正意义上的懂,我查了好多篇文章,呵呵,千篇一律,都不能解答我的疑惑,说实话,别觉得自己懂了,其实你根本就没有懂,最后是懵逼了好久,才觉得自己应该是懂了,有时间也要写一篇事务的四大特性的文章。

说实话,网上的很多文章,真的是千篇一律,当你产生了疑惑,很难找到解答,因为你会发现,这几篇说的都是一样的,那个你感觉特别重要的疑惑都没有说到。好吧,不吐槽了,等下要被大佬门怼我写的文章了。

一面大致说了这么多,有些忘了。比起提前批一面,我觉得自己在表述上好多了,也会扯了,这里我想跟大家说的就是,问题就那些,一定要搞懂,延伸,要理解,该背的要背,例如进程有哪些通信方式。如果要面试腾讯的时候,计算机网络、操作系统,Linux这些底层的,要学好,尽管你是面试 java 岗位的,可能他一个 Java 的问题都不问的。

腾讯Java面试都挂在二面,分享下失败经验+傻傻的面试经历

最后的内容

在开头跟大家分享的时候我就说,面试我是没有做好准备的,全靠平时的积累,确实有点临时抱佛脚了,以至于我自己还是挺懊恼的。(准备好了或许可以拿个40k,没做准备只有30k+,你们懂那种感觉吗)

如何准备面试?

1、前期铺垫(技术沉积)

程序员面试其实是对于技术的一次摸底考试,你的技术牛逼,那你就是大爷。大厂对于技术的要求主要体现在:基础,原理,深入研究源码,广度,实战五个方面,也只有将原理理论结合实战才能把技术点吃透。

下面是我会看的一些资料笔记,希望能帮助大家由浅入深,由点到面的学习Java,应对大厂面试官的灵魂追问

这部分内容过多,小编只贴出部分内容展示给大家了,见谅见谅!

  • Java程序员必看《Java开发核心笔记(华山版)》

  • Redis学习笔记

  • Java并发编程学习笔记

四部分,详细拆分并发编程——并发编程+模式篇+应用篇+原理篇

  • Java程序员必看书籍《深入理解 ava虚拟机第3版》(pdf版)

  • 大厂面试必问——数据结构与算法汇集笔记

其他像Spring,SpringBoot,SpringCloud,SpringCloudAlibaba,Dubbo,Zookeeper,Kafka,RocketMQ,RabbitMQ,Netty,MySQL,Docker,K8s等等我都整理好,这里就不一一展示了。

2、狂刷面试题

技术主要是体现在平时的积累实用,面试前准备两个月的时间再好好复习一遍,紧接着就可以刷面试题了,下面这些面试题都是小编精心整理的,贴给大家看看。

①大厂高频45道笔试题(智商题)

②BAT大厂面试总结(部分内容截图)

③面试总结

3、结合实际,修改简历

程序员的简历一定要多下一些功夫,尤其是对一些字眼要再三斟酌,如“精通、熟悉、了解”这三者的区别一定要区分清楚,否则就是在给自己挖坑了。当然不会包装,我可以将我的简历给你参考参考,如果还不够,那下面这些简历模板任你挑选:

以上分享,希望大家可以在金三银四跳槽季找到一份好工作,但千万也记住,技术一定是平时工作种累计或者自学(或报班跟着老师学)通过实战累计的,千万不要临时抱佛脚。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

老师学)通过实战累计的,千万不要临时抱佛脚。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值