京东再次加薪,同时扩招2000人!
大家好,我是二哥呀。
从京东黑板报那里看到一条消息:京东 2025 届校招生岗位薪酬全面上调,并且上调幅度不低于 20%。
同时,这次校招开放 18000 个岗位,其中包含 12000 个应届生,6000 个实习生,这比上次京东官宣的 16000 人又多了 2000 人!
我只能说,强东哥还是给力啊,挣钱了真愿意给兄弟们分,这波必须点赞。
(这比在背后搞小动作的某跳、某丰真的是强一万倍,里面的前因后果我们以后再讲)
看看兄弟姐妹们这狂喜的样子:打工嘛,钱多事少离家近总得占一条吧!
看看 24 届秋招时我统计到的京东校招薪资,大家应该可以更直观的感受到。
就拿 211 本的 23k*16薪来算,最低加薪 20%,那也就意味着年包从 36.8 万直接飙升到 44.16 万,这对于一名出入职场的应届生来说,香,实在是香。
兄弟姐妹们,这不冲京东,都对不起强东哥的一片好意啊。
接下来就给大家分享一个《Java 面试指南》中收录的京东同学 7 的一面面经,来看看京东的面试官都喜欢问哪些问题,好做到知彼知己,被面试官吊打,哦不,吊打面试官(dog)。
1、《30 天速通 Java.pdf》下载 2、三分恶面渣逆袭在线版:https://javabetter.cn/sidebar/sanfene/nixi.html
京东同学 8 一面面经
一些面试高频题我在面渣逆袭中都帮大家标出来了,大家在准备面试的时候尽量从高频题开始背,有一个先后顺序,毕竟每个人的时间都是有限的,面试中也不需要所有问题都能答得出来。
young GC频繁如何排查?修改哪些参数?
频繁的 Minor GC(也称为 Young GC)通常表示新生代中的对象频繁地被垃圾回收,可能是因为新生代空间设置过小,或者是因为程序中存在大量的短生命周期对象(如临时变量、方法调用中创建的对象等)。
可以使用 GC 日志进行分析,查看 GC 的频率和耗时,找到频繁 GC 的原因。
-XX:+PrintGCDetails -Xloggc:gc.log
或者使用监控工具(如 VisualVM、jstat、jconsole 等)查看堆内存的使用情况,特别是新生代(Eden 和 Survivor 区)的使用情况。
如果是因为新生代空间不足,可以通过 -Xmn
增加新生代的大小,减少新生代的填满速度。
java -Xmn256m your-app.jar
如果对象未能在 Survivor 区足够长时间存活,就会被晋升到老年代,可以通过 -XX:SurvivorRatio
参数调整 Eden 和 Survivor 的比例。默认比例是 8:1,表示 8 个空间用于 Eden,1 个空间用于 Survivor 区。
-XX:SurvivorRatio=6
这将减少 Eden 区的大小,增加 Survivor 区的大小,以确保对象在 Survivor 区中存活的时间足够长,避免过早晋升到老年代。
get和post请求
①、参数传递方式不同
GET 参数通过 URL(统一资源定位符)进行传递,通常附加在 URL 的查询字符串中(即 ? 后面的部分),例如 https://javabetter.cn/api?param1=value1¶m2=value2
POST 参数通常通过请求体(body) 传递,适合上传文件或提交表单。
②、缓存和幂等
GET 请求通常会被浏览器和缓存服务器缓存,因为它不会改变服务器状态,属于幂等操作(执行一次或多次 GET 请求的效果是相同的)。常用于获取静态资源(如图片、CSS 文件)。
POST 请求不会被缓存,因为它通常用于执行修改操作,可能会导致服务器数据的变化。
③、安全性
GET 请求不适合传递敏感数据(如密码、信用卡号等),因为参数会显示在 URL 中,并且 URL 会存储在浏览器历史、日志、服务器日志中,容易泄露敏感信息。
POST 请求比 GET 更适合传递敏感数据,因为参数存储在请求体中,不会直接暴露在 URL 中。不过,POST 本质上并不比 GET 更安全,因为数据仍然可以通过中间人攻击或抓包工具被截获。
因此,无论 GET 还是 POST,都应当使用 HTTPS 协议来加密传输。
索引
MySQL 的默认存储引擎是 InnoDB,它采用的是 B+树索引,B+树是一种自平衡的多路查找树,和红黑树、二叉平衡树不同,B+树的每个节点可以有 m 个子节点,而红黑树和二叉平衡树都只有 2 个。
和 B 树不同,B+树的非叶子节点只存储键值,不存储数据,而叶子节点存储了所有的数据,并且构成了一个有序链表。
这样做的好处是,非叶子节点上由于没有存储数据,就可以存储更多的键值对,再加上叶子节点构成了一个有序链表,范围查询时就可以直接通过叶子节点间的指针顺序访问整个查询范围内的所有记录,而无需对树进行多次遍历。查询的效率会更高。
SpringMVC框架
Spring MVC 是基于模型-视图-控制器的 Web 框架,它的工作流程也主要是围绕着 Model、View、Controller 这三个组件展开的。
IOC,AOP
所谓的IoC(控制反转,Inversion of Control),就是由容器来控制对象的生命周期和对象之间的关系。以前是我们想要什么就自己创建什么,现在是我们需要什么容器就帮我们送来什么。
也就是说,控制对象生命周期的不再是引用它的对象,而是容器,这就叫控制反转。
没有 IoC 之前:
我需要一个女朋友,刚好大街上突然看到了一个小姐姐,人很好看,于是我就自己主动上去搭讪,要她的微信号,找机会聊天关心她,然后约她出来吃饭,打听她的爱好,三观。。。
有了 IoC 之后:
我需要一个女朋友,于是我就去找婚介所,告诉婚介所,我需要一个长的像赵露思的,会打 Dota2 的,于是婚介所在它的人才库里开始找,找不到它就直接说没有,找到它就直接介绍给我。
婚介所就相当于一个 IoC 容器,我就是一个对象,我需要的女朋友就是另一个对象,我不用关心女朋友是怎么来的,我只需要告诉婚介所我需要什么样的女朋友,婚介所就帮我去找。
Spring 倡导的开发方式就是这样,所有的类创建都通过 Spring 容器来,不再是开发者去 new,去 = null 销毁,这些创建和销毁的工作都交给 Spring 容器来。
AOP,也就是 Aspect-oriented Programming,译为面向切面编程,是 Spring 中最重要的核心概念之一。
简单点说,AOP 就是把一些业务逻辑中的相同代码抽取到一个独立的模块中,让业务逻辑更加清爽。
举个例子,假如我们现在需要在业务代码开始前进行参数校验,在结束后打印日志,该怎么办呢?
我们可以把日志记录
和数据校验
这两个功能抽取出来,形成一个切面,然后在业务代码中引入这个切面,这样就可以实现业务逻辑和通用逻辑的分离。
业务代码不再关心这些通用逻辑,只需要关心自己的业务实现,这样就实现了业务逻辑和通用逻辑的分离。
对pipeline的理解,什么场景适合使用pipeline?有了解过pipeline的底层?
Pipeline 是 Redis 提供的一种优化手段,允许客户端一次性向服务器发送多个命令,而不必等待每个命令的响应,从而减少网络延迟。它的工作原理类似于批量操作,即多个命令一次性打包发送,Redis 服务器依次执行后再将结果一次性返回给客户端。
通常在 Redis 中,每个请求都会遵循以下流程:
客户端发送命令到服务器。 服务器执行命令并将结果返回给客户端。 客户端接收返回结果。
每一个请求和响应之间存在一次网络通信的往返时间(RTT,Round-Trip Time),如果大量请求依次发送,网络延迟会显著增加请求的总执行时间。
有了 Pipeline 后,流程变为:
发送命令1、命令2、命令3…… -> 服务器处理 -> 一次性返回所有结果。
例如,批量写入大量数据或执行一系列查询时,可以将这些操作打包通过 Pipeline 执行。
在 Pipeline 模式下,客户端不会在每条命令发送后立即等待 Redis 的响应,而是将多个命令依次写入 TCP 缓冲区,所有命令一起发送到 Redis 服务器。
Redis 服务器接收到批量命令后,依次执行每个命令。
Redis 服务器执行完所有命令后,将每条命令的结果一次性打包通过 TCP 返回给客户端。
客户端一次性接收所有返回结果,并解析每个命令的执行结果。
内容来源
星球嘉宾三分恶的面渣逆袭:https://javabetter.cn/sidebar/sanfene/nixi.html 二哥的 Java 进阶之路(GitHub 已有 12000+star):https://javabetter.cn
ending
一个人可以走得很快,但一群人才能走得更远。二哥的编程星球已经有 6100 多名球友加入了,如果你也需要一个良好的学习环境,戳链接 🔗 加入我们吧。这是一个编程学习指南 + Java 项目实战 + LeetCode 刷题的私密圈子,你可以阅读星球专栏、向二哥提问、帮你制定学习计划、和球友一起打卡成长。
两个置顶帖「球友必看」和「知识图谱」里已经沉淀了非常多优质的学习资源,相信能帮助你走的更快、更稳、更远。
欢迎点击左下角阅读原文了解二哥的编程星球,这可能是你学习求职路上最有含金量的一次点击。
最后,把二哥的座右铭送给大家:没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。共勉 💪。