面试面到自闭,面试官问了我这些?,2024年最新java五年经验面试题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

Q19. protobuf协议

A:我们公司之前使用的是json协议,没有用过protobuf协议。

Q20. 数据库

A:没用过。

Q21. redis

A:这个是自己学习使用的,生产环境没用过(这里说了下,我用它干嘛的,使用python的flask web框架基于redis的list结构开发一个网络聊天程序)

Q22. 解释线程安全和可重入函数

A:这个是关于多线程访问的吗?可重入函数这个名词听过,但是忘记干啥了,面试官说pass.

(一个可重入函数被称为可重入的,表明该函数被重入之后,不会产生任何不良后果,一个函数被重入,表示这个函数没有执行完成,由于内部原因或外部原因调用,又一次进入该函数执行)

Q23. top的命令cache和buffer区别

A:这个平常没有关注过。(buffer是块设备的读写缓冲区,比如磁盘,cache是文件系统的缓存,常用于文件)

Q24. 常见Linux命令是否用过,比如strace和netstat

A:这个有用过,strace用来跟踪程序的执行,top查看内存,以及tcpdump等进行抓包等等。

Q25. 多个动态库的连接顺序有区别吗,顺序怎么排

A:有顺序的,如果顺序错误的话可能导致编译失败。这里的编译顺序应该是被依赖的库放在后面。(这个我之前工作中遇到这个坑,所以知道。不过当时面试的时候,把顺序忘了)

Q26. 智力题,100本书,两个人轮流拿,每次拿1~5本,你先拿,有没有啥策略可以保证你可以拿到最后一本?

A:这个得承认,智力题不是我的强项,每次遇到的话都要很久才思考明白,当时考虑了大概30秒,想着100本这么多,要不先来10本试试,我一本,他一本,我一本…挣扎了几秒,老实承认,没想到啥好方法。

(此题解法可以是先手拿4本,后续双方每次拿6的倍数,这样可以保证最终可以拿到最后一本)。

腾讯第三面

本来约的是9月31号,因为国庆的缘故,延到国庆后。现场面,下午2点来了之后,给了一张试卷,1.5小时完成。如果难度分成5个等级,感觉介于2和3之间。试卷内容保密。总之,考察比较基础也比较全面,C++,操作系统,计算机网络,算法和数据结构。

3点半,两个面试官。对着简历介绍项目,细节,技术难点,架构设计等等。接下来考察软件工程原理。这部分只给出题目。答案我都总结在文档里,题目不分先后。

1、Linux互斥锁里面递归锁和非递归锁的使用方式,返回值。

2、Golang Map是否是线程安全,如何设计一个无锁保护的Map(可能答案是使用CAS)。

3、程序的地址空间分布。

4、介绍Linux内存管理机制、涉及到的算法。

5、设计一个内存池。

6、设计一个定时器

7、解释时间轮

8、Golang里面CGO原理

9、awk和sed是啥。咋用。

10、TCP粘包怎么解决。

11、设计线程池。

12、Golang defer语句调用顺序。

13、TIME_WAIT状态有啥用。

14、画出四次挥手原理图。

15、define和inline区别。

16、定义常量指针和指针常量。

17、accept是在三次握手哪一次。

18、backlog作用。

腾讯第四面

拿着手机看我的博客里有一篇介绍memcpy的标准库函数,让我优化。当时觉得,标准库里的函数咋优化,能优化标准库自己不就优化了,哪轮到我优化???但人家让优化,肯定有优化空间,硬着头皮上。对,就是下面这个函数,看了将近一分钟,咋看都觉得这个函数很完美。觉得一个一个复制已经很好了,还能咋办。问了下,能否给点提示,答曰,不急,慢慢来。又想了一会儿,还是没啥思路,这时候,总监来了一句,“你不觉得一个一个复制有点慢吗”。

到了这时候,还是没啥反应,不过既然嫌弃一个一个慢,那两个两个复制可以么?问了下两个两个复制算不算优化,答曰:算。于是想到使用一个short类型复制。后来总监看我有点思路,就提示我说,从汇编角度来优化,包括寄存器大小等等。

然后,我使用long long类型来复制,即每次8个。手写了实现,然后总监问我,如果地址不对齐咋办?到这一步,当时没想到地址对齐这个问题,没有答上来,后来想了下,即使没对齐,可以先一个一个复制等对齐了再每次复制8个。

当时对齐问题没啥思路就pass了。感觉面试官水平很高,这道问题的水准也很高。关于优化以及编译的问题,事后查了相关资料,这里推荐两本书:《深入理解计算机系统》、《程序员的自我修养—链接、装载与库》。对于优化的原理、编译器原理讲解的非常好。

腾讯第五面

距离三面和四面隔了7天,期间没有任何消息,以为凉了。结果来了电话,约复试。

复试的内容没有特殊之处,依旧是基础。内容如下:

1、介绍前公司产品的功能、市场竞争力、自己负责的部分、产品的软件架构

简要介绍下前公司的产品、功能、市场竞争力,虽然咱是搞技术的,但是关于产品市场的事情,平常工作中还是多多少少有所关注。此外,就是介绍产品的软件架构图,以及自己负责的模块等等。很多同学遇到类似的问题,会说,自己只负责一个部分,不知道产品的整体架构。这样回答,往往给人的感觉就是很水,搞技术的,不会可以,但是不会可以学啊,虽然,整体架构没涉及过,但是,没吃过猪肉不能没见过猪跑。做了那么久,产品啥架构还不了解,这就有点说不过去了。所以,建议各位同学平常工作过程中,有空的话也从整体的角度思考下产品,万一哪天需要自己搞呢。

2、路由NAT如何实现

这一块没有接触过。画了一个映射图,大概描述了一下。

3、考察结构体字节对齐问题

4、概率题,两个红球一个白球,三个盒子。问第二个盒子至少一个红球的概率

考察概率论。刚开始拿到题,以为需要算法。想了一会儿没啥好方法,略显尴尬的说,使用枚举吧。所谓暴力法。画了一个多叉树的图,一目了然。事后想来,枚举才是最简单的方法。

5、编程题,字符串去空格

6、进程、线程区别。为什么有了多线程还是用多进程

基本的操作系统原理题。后面的问题只说了进程地址空间有限,不能创建任意多的线程。回来想了下,更好的回答应该是,进程是一个程序实体,多个程序需要多个进程。此外,进程地址空间相互隔离,安全。

7、平时如何定位问题,core dump怎么产生的

通常线上问题先复现、再定位。core dump怎么产生不知道。后来查了下,当程序有未处理的信号时,内核会自动生成core dump。能否生成core dump还有ulimit -c的限制。

8、构造函数调用虚函数可不可以

不可以。说了下虚函数的作用以及构造函数的调用顺序。后面又问,如果调用会出现啥情况。因为不确定所以说不知道。回来测试了下,是调用被调对象的自己的版本。

9、算法题:给定电话号码加区号,如何快速查找对应地区

区号占4位。给了长度10000的数组做hash,O(1)。问有没有办法提高空间利用率,没想到。想到的同学告诉我。然后给了红黑树存储,时间复杂度O(logN)太高。

10、常用的IDE

C语言使用source insight,Golang使用liteide。

11、线程调度问题

这里解释了下两种调度类以及它们的调度策略,然后是底层的实现原理,后来问调度过程的具体步骤,我记得内核的调度函数是schedule(),具体的操作没有分析过,这里只说了大概,保存寄存器、上下文,然后加载被调进程的上下文、寄存器等等。

12、不同编译器编译的库能否混用

没用过,不知道。后来查了下,不同版本的编译器编译出来库不能混用,不过网上的回答也没有解释清楚。觉得可能在问extern "C"问题。

13、离职原因,离职这么久都干嘛去了

14、阅读源码有啥好处?对以前的项目有没有啥改进之处?

15、有什么问题想问的

问了下直播业务涉及的终端以及后台开发过程中使用到哪些中间件技术。然后,问了下腾讯的服务器内核啥样子,回答说是定制的T-Linux内核。

整体感觉面试愉快,面试官也在考察知识深度,不会的也没关系。

腾讯第六面

距离复试三天时间,中午电话。

1、为什么学些德语

2、第一份工作学习到啥

3、对腾讯怎么看

4、期望薪资以及依据

5、当前薪资、福利

6、以前是通信的,对互联网怎么看

7、部门业务量很多,可能需要加班,你怎么看

8、有什么问题想问的

两天后,给了offer。腾讯的面试流程大体这样,技术面考察的都是基础,要有深度,不能停留在表面。自己前前后后准备了四个月,从第一次的惨败到后期的从容面对,一步步走下来,收获满满,最终得到想要的结果

阿里后台面试

阿里一面(电话面试一小时)

首先做一个简单的自我介绍,主要包括学校经历和工作经历。我工作经历只有一年,大部分时间都是在做产品设计和UI/UX Design,因此隔着电话都能感受到面试官的shock。

Java基础。自动拆装箱如何实现,String,StringBuffer,StringBuilder的异同以及各自的实现。

JVM基础。JVM的内存模型,常见的垃圾回收算法。

事务ACID,编程时如何保证事务,分布式情况下如何保证事务。

由于分布式相关场景我没有接触过,因此面试官一直诱导我去设计实现一个分布式事务。

数据库乐观锁和悲观锁。如何实现一个乐观锁。

消息队列使用场景,Kafka的架构以及原理。

什么是restful api,和rpc调用有什么区别。

单例的几种写法。volatile关键字有什么作用。

以上就是电话面试的大体问题,面试完之后,又发给我三道算法题目,要求我一小时内完成,下面是三道算法题:

翻转一个long类型数字。例如输入123456L,输出654321L。- Leetcode翻转integer的变种。考察能否正确处理溢出的情况。

输入一个double,要求返回与它最接近的.49或.99的数字。例如12.77返回12.99,11.02返回10.99,12.61返回12.49。

有三个线程ABC分别向一个数组中写入a,l,i,要求最终的写入结果形如alialiali…写入次数由A线程决定。

这三道题目做的还比较顺利,第二天面试官又联系我阐述一下第一题和第三题的思路,然后通知我可以参加下一轮了。

二面(电话面试一小时)

二面主要考察了一些开放式的问题。

首先还是自我介绍。主要是工作后的经历。介绍一下工作一年所在team的产品,我承担了什么职责。

开放式问题。如何设计一个rpc框架。

开放式问题。如何设计一个服务注册中心。

集合类源码。HashMap是如何实现的,扩容的过程,为什么要扩容为2倍。HashMap中的链表替换为数组可以吗?时间复杂度相同吗?

集合类源码。线程安全的HashMap是什么?(HashTable和ConcurrentHashMap)ConcurrentHashMap是如何实现的?(Java7分段锁和Java8的CAS+Lock)和HashTable相比有什么优势?

红黑树的结构,时间复杂度是多少,如何计算的

什么是CAS操作,如何实现一个自定义锁

最后

小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。

关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。

image

这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

最后

小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。

关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。

[外链图片转存中…(img-9H4C02Fv-1713190623019)]

这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-3nhpljYD-1713190623019)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值