三个月接触java的愣头青,刷题了这份剑指offer 指南,竟然拿到腾讯offer ! ! !

一名本科程序员从传统外包公司离职,通过三个月刷《剑指Offer》指南,成功拿到腾讯offer。文章分享了腾讯面试经历,涉及Java锁、数据结构、并发、Spring Cloud、分布式系统等技术,强调大厂面试重点在于多线程、Spring、Mybatis等知识。

前言

 首先来个自我介绍吧,我是一个拥有大厂梦的程序猿,本人小小本科毕业 ,然后在传统的外包公司干了3个月,实在是干不下去了,然后梦想去大厂,趁着辞职,准备跨山跃海去 大厂闯一下,于是我把我从我朋友那里拿出来的这份剑指offer指南狠狠刷了 3个月 ,结果皇天不负苦心人,靠着这些面试题,终于拿到了腾讯的offer,成功入职腾讯,然后就来写一篇文章,和大家分享一下我的面试经历,和我朋友的这份剑指offer的指南,希望大家都能圆了去大厂的梦!加油,奥利给!

腾讯一面:

1.自我介绍

2.擅长哪方面的技术?

3. Java有哪些锁种类? (乐观锁&悲观锁、可重入锁&Synchronize等)

4.比较重要的数据结构,如链表,队列,栈的基本理解及大致实现

5. J.U.C下的常见类的使用。ThreadPool的深入考察; BlockingQueue的使用

6. Java内存分代模型,GC算法, JVM常见的启动参数; CMS算法的过程。

7. volatile关键字有什么用(包括底层原理)

8.线程池的调优策略

9. spring cloud的服务注册与发现是怎么设计的?

10.分布式系统的全局id如何实现

11.分布式锁的方案,redis和zookeeper哪个个好,如果是集群部署,高并发情况下哪个性能更好。

腾讯二面

1.擅长的项目   详细解释了项目的几个模块 项目里遇到的一些问题

2.问了Redis在项目中的使用

3.为什么用rabbitMQ

4.问了spring

5.讲一下java的线程(我还顺便讲了线程池,当时没反应过来,应该往锁那里引的)

5.arraylist和linklist的区别

6.UDP和TCP的区别

7.HTTP的请求方法的几种类型,GET和POST的区别,首部字段key-value都知道哪些

8.问了一些shell命令

9.测试的一些东西(红白黑盒)

10.百度框怎么测试

11.一道意外简单的算法题==(两个栈实现队列)

腾讯三面

1、十亿个数的集合和10w个数的集合,如何求它们的交集。

2、十亿和数找到前100个最大的,堆排序,怎么实现,怎么调整。

3、TCP和UDP的区别,具体使用场景呢。

4、TCP四次挥手讲一下过程,最后一次ack如果客户端没收到怎么办。

5、对于socket编程,accept方法是干什么的,在三次握手中属于第几次?

6、Linux操作系统了解么,了解一点点,就没问了。

7、对于单例模式,有什么使用场景了,讲了全局id生成器,他问我分布式id生成器怎么实现,说了zk,问我zk了解原理不,讲了zab。

8、除了单例模式,知道适配器模式怎么实现么,有什么用

9、回到网络,刚才你说到直播场景,知道直播的架构怎么设计么,要点是什么?

10、Redis和MySQL有什么区别,用于什么场景。

总结

现在想想还是有点小激动的,本来抱着试一试的心态,结果真的能去腾讯了,我觉得吧其实大厂面试主要就是围绕着:多线程、spring、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 这些,最后是我把这套 我学习了3个月的剑指offer指南 大厂的面试题 跟大家分享一下,如需PDF的原件下载------点击此处 传送门

 

本书附带提供了50道编程题的完整的源代码,其中包含了每道题的测试用例。很多面试官在应聘者写完程序之后,都会要求应聘者自己想-一些测试用例来测试自己的代码,一些没有实际项目开发经验的应聘者不知道如何做单元测试。相信读者朋友在读完这本书之后就会知道如何从基本功能测试、边界值测试、性能测试等方面去设计测试用例,从而提高编写高质量代码的能力。

第1章面试的流程

第1章介绍面试的流程。通常整个面试过程可以分为电话面试、共享桌面远程面试和现场面试3个阶段,每一轮面试又可以分为行为面试、技术面试和应聘者提问3个环节。本章详细讨论了面试中每- -环节需要注意的问题。其中第1.3.2 节深入讨论了技术面试中的5个要素,是全书的大纲,接下来的第2~6章逐-讨论每个要点。

1.1面试官谈面试

1.2面试的三种形式

1.2.1电话面试

1.2.2共享桌面远程面试

..........

剑指offer名企面试官讲述典型编程题,拿阿里offer这一份PDF足矣

 

第2章面试需要的基础知

第2章梳理应聘者接受技术面试时需要用到的基础知识。本章从编程语言、数据结构及算法三方面总结了程序员面试的知识点。

 


从学习路线→☛面试刷题→☛核心知识补漏,以上全套的Java学习资源皆可免费共享给有需求的你,还请仔细关注一下免费下载原件的方式:

1:一键三连+评论此文(码字不易,一键三连是对此文的一个认可,也可让更多朋友阅读到)
2:加小姐姐VX:k15197783918

 

 

<think>好的,我现在需要帮助用户理解一个Makefile的结构和功能。首先,我需要回忆Makefile的基本概念和工作原理。根据用户提供的引用内容,特别是引用[1]中的信息,变量在Makefile中是动态展开的,除了在命令部分、使用‘=’定义的变量右侧,或者用define定义的变量主体部分。这可能意味着变量展开的时机会影响其值,需要注意作用域的问。 接下来,用户希望解释特定的Makefile,所以需要先了解它的各个部分:变量定义、规则和目标。我应该分步骤分析每个部分的作用。例如,变量定义通常用于存储编译器选项、源文件列表等,这样可以方便后续的维护和修改。规则部分包括目标和依赖关系,以及执行的命令,这部分是Makefile的核心,决定了如何构建项目。 然后,我需要考虑用户可能的疑问点,比如变量如何传递到子make(引用[2]提到可以通过显式请求或环境变量传递,但子make的变量不会覆盖除非使用-e选项)。此外,用户提供的引用[3]链接到其他练习,可能涉及到更高级的功能,比如函数、条件语句等,但当前问集中在基本结构上。 我应该先给出一个通用的Makefile结构解释,然后具体到示例中的每个部分。比如,变量定义如CC和CFLAGS通常指定编译器和编译选项,SRCS和OBJS定义源文件和目标文件。然后解释规则,比如all目标作为默认目标,依赖其他目标文件,接着是如何从.c生成.o的隐含规则。 同时,需要提到clean目标的作用是清理生成的文件,以及.PHONY的作用,防止与同名文件冲突。可能还需要解释变量展开的时机,比如递归展开和立即展开的区别,以及如何影响Makefile的行为。 在生成相关问时,要确保问覆盖Makefile的常见应用和潜在问,如变量作用域、规则执行顺序、多目标处理等。这有助于用户一步深入学习。 最后,确保回答符合用户的要求:结构清晰,使用中文,正确使用LaTeX格式,引用标记自然。检查是否有遗漏的部分,比如特殊规则或变量用法,是否需要详细说明动态作用域的影响,或者如何调试Makefile的执行流程。 总结来说,我需要分步骤解析Makefile的各个组成部分,结合用户的引用内容,解释每个部分的功能,并生成相关问帮助用户巩固知识。</think>### Makefile结构解析 以下是Makefile的典型结构及其核心组件的解释,以示例说明: ```makefile # 变量定义 CC = gcc CFLAGS = -Wall -O2 SRCS = main.c utils.c OBJS = $(SRCS:.c=.o) TARGET = app # 默认目标(规则) all: $(TARGET) # 链接目标生成可执行文件 $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $@ $^ # 隐含规则:从.c生成.o %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ # 清理规则 clean: rm -f $(OBJS) $(TARGET) .PHONY: all clean ``` #### 1. **变量定义** - **作用**:存储重复使用的参数,便于统一修改 - `CC = gcc`:定义C编译器类型 - `CFLAGS = -Wall -O2`:编译选项(警告全开+优化级别2) - `SRCS = main.c utils.c`:源文件列表 - `OBJS = $(SRCS:.c=.o)`:通过变量替换生成目标文件列表(`main.o utils.o`) - **变量展开规则**:变量在读取时动态展开,如`$(SRCS:.c=.o)`会被立即替换为对应的.o文件[^1] #### 2. **规则与目标** - **规则结构**: ```makefile target: dependencies commands ``` - `all: $(TARGET)`:默认目标,依赖于`$(TARGET)`的构建结果 - `$(TARGET): $(OBJS)`:定义可执行文件的生成规则,依赖所有目标文件 - `$@`表示目标名(`app`),`$^`表示所有依赖(`main.o utils.o`) - `%.o: %.c`:隐含规则,描述如何从.c文件编译生成.o文件 - `$<`表示第一个依赖(即对应的.c文件) #### 3. **特殊目标与命令** - `clean`:删除生成的文件,需手动执行`make clean` - `.PHONY`: 声明伪目标,避免与同名文件冲突(如:即使存在`clean`文件,仍执行清理操作) #### 4. **变量作用域与传递** - 顶层Makefile的变量可通过`export`传递到子make过程,但子make的变量默认不覆盖父程变量(除非使用`-e`选项)[^2]
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值