六个月滴滴实习:轻松、舒心又高薪!

news2025/1/16 20:06:45

不久前,一位在滴滴后端研发部门实习了六个月的小伙伴在牛客网上分享了他的实习体验, 作者详细描述了他在滴滴的实习生活。

从他的叙述中,我们可以感受到与其他互联网公司相比,滴滴的工作环境显得相对轻松和舒适

他提到,自己在西二旗附近的两个职场工作过,环境优美,绿植环绕,配备的办公设备也是业内顶尖水准

滴滴的工作福利虽然没有过多花哨的项目,但在基本饮食上做得很不错,尤其是晚餐的选择多样,价格合理。

此外,工作氛围友好,工作与生活的平衡得到了良好的保证,很少有加班的情况,且员工与领导之间关系融洽,相互尊重。

更重要的是,作为北京互联网行业的一份子,滴滴为实习生提供的薪资待遇也是相当可观的。这样的工作稳定性和收入水平,对于很多正在寻找实习机会的年轻人来说,无疑具有很大的吸引力。

在这篇分享中,这位同学不仅带给我们滴滴轻松舒适的工作环境感受,更向我们展示了在这家公司实习的独特价值和体验。

在最后,他分享了滴滴一面的面试问题,让我们跟随他的步伐,看看滴滴面试的难度呢。

-----------------------------开始面试------

面试官: 你好,欢迎参加今天的面试。首先,能否讲讲你最近参与的项目?

求职者: 当然可以。最近我主要参与了一个电商平台的后端开发项目。在这个项目中,我负责商品管理模块,实现了商品的增删改查功能,以及与订单系统的对接。我们使用Spring Boot作为主要框架,利用MyBatis进行数据持久化操作,并且通过Redis实现了商品信息的缓存,以提高系统的响应速度。

面试官: 很好。请解释一下接口和抽象类的区别?

求职者: 接口和抽象类都可以用来定义抽象类型,但它们有几个主要区别。首先,接口可以定义方法签名,但不能包含方法实现(除了Java 8中的default方法),而抽象类可以包含方法实现。其次,一个类可以实现多个接口,但只能继承一个抽象类。此外,接口主要用于定义类型的契约,而抽象类则更多地被用来共享方法实现。

面试官: 那Java 8为什么要在接口中增加default方法呢?

求职者: Java 8中引入default方法主要是为了增强接口的功能和提供向后兼容的能力。通过default方法,接口可以有具体的实现,这样,当一个接口需要扩展新的方法时,不会破坏已有的实现类。这对于在不改变现有代码基础上扩展API非常有用。

面试官: 你能说说在什么情况下会使用接口或抽象类吗?

求职者: 通常,如果我们要定义一组类型必须遵守的契约,而不关心具体实现,那么就使用接口。如果我们既想定义契约又想提供一些方法的默认实现,那么可以使用抽象类。简而言之,如果多个类之间有很强的是“有能力做”的关系,用接口;如果是“是一个”的关系,使用抽象类更合适。

面试官: 谈谈synchronized的底层实现。

求职者: synchronized在底层主要通过对象监视器(Monitor)来实现同步。在JVM中,对象头会存储锁的状态和指向锁记录的指针。当一个线程尝试进入同步块时,它会检查对象头的标记字段。如果未被锁定,JVM会将锁的所有权标记为当前线程,并允许进入同步块。如果对象已被其他线程锁定,当前线程将会被阻塞,直到锁被释放。

面试官: 说说线程池的参数。

求职者: Java中线程池的核心参数包括:

  1. corePoolSize:核心线程数,即使线程是空闲的,线程池也会尽量维持该数量的线程。
  2. maximumPoolSize:最大线程数,线程池允许创建的最大线程数。
  3. keepAliveTime:当线程数大于核心线程数时,这是多余空闲线程在终止前等待新任务的最长时间。
  4. unitkeepAliveTime的时间单位。
  5. workQueue:工作队列,用于存放等待执行的任务。
  6. threadFactory:线程工厂,用于创建新线程。
  7. handler:拒绝策略,当任务太多来不及处理时,如何拒绝任务。

面试官: 谈谈MySQL索引的底层实现。为什么用B+树不用B树


求职者: MySQL索引的底层实现一般使用的是B+树数据结构。B+树相对于B树的优势在于它有更高的查询性能和范围查询能力。B+树的所有值都存在于叶子节点,并且叶子节点之间是相互链接的,这使得范围查询可以通过遍历叶子节点的链表来高效完成。而B树的值分布在整个树中,不利于快速范围检索。此外,B+树的内节点不存储数据,只存储键值,这意味着相同高度的B+树可以拥有更多的节点,减少了树的高度,从而减少了磁盘IO次数。


面试官: Spring事务的底层实现是如何的?


求职者: Spring事务的底层实现主要基于AOP(面向切面编程)和事务抽象。当一个方法被@Transactional注解标记时,Spring会通过AOP为这个方法创建一个代理,该代理会在方法执行前后添加事务管理的逻辑。如果方法执行期间没有异常发生,那么事件顺利进行。

面试官: 那么,MySQL索引的底层实现是什么?

求职者: MySQL索引的底层实现主要是通过B+树数据结构,特别是InnoDB存储引擎的默认索引类型。B+树是一种平衡多路查找树,它可以保持数据排序,同时支持快速的插入、删除和查找操作。在B+树中,所有的值都存在叶子节点上,而且叶子节点之间是以链表形式相连的,这对于范围查询非常有效。

面试官: 为什么使用B+树而不是B树作为索引结构?

求职者: B+树相比B树有几个优点使其更适合用作数据库索引:

  1. B+树的磁盘读写性能更优,因为它的内部节点不存储数据,只存储键值,这样可以有更多的键值放在同一页面,减少了IO次数。
  2. B+树的查询性能更加稳定,因为所有查询都要查找到叶子节点,查询路径的长度相同。
  3. B+树的叶子节点之间是相互链接的,这使得范围查询更加高效

面试官: 谈谈Spring事务的底层实现机制。

求职者: Spring事务的底层是通过AOP(面向切面编程)和事务抽象来实现的。当在方法上使用@Transactional注解时,Spring会通过AOP在运行时创建一个代理,该代理会在方法执行前后添加事务管理的逻辑。如果方法执行成功,事务就会提交;如果方法执行过程中出现异常,则会回滚事务。Spring事务抽象还允许开发者定义事务的传播行为和隔离级别。

面试官: 那么在什么情况下Spring事务可能会失效

求职者: Spring事务可能会在以下几种情况下失效:

  1. 私有方法或非公共方法上使用@Transactional,因为Spring事务代理默认只能应用于公共方法。
  2. 同一个类内部的方法调用,这种情况下事务的传播不会生效。
  3. 方法没有抛出运行时异常或指定的异常,事务默认只在出现运行时异常时回滚。
  4. 事务管理配置错误,如事务管理器没有正确配置或没有启用注解驱动的事务管理。

面试官: 讲讲Redis的基本数据结构

求职者: Redis支持的基本数据结构包括:

  1. String:字符串,可以包含任何数据,如文本或二进制数据。
  2. List:列表,可以在头部或尾部添加元素,实现栈或队列的功能。
  3. Set:集合,存储不重复的元素,支持集合间的运算如并集、交集。
  4. Hash:哈希表,用于存储对象及其属性。
  5. ZSet (Sorted Set) :有序集合,元素存储时会关联一个分数,按分数进行排序。

面试官: 那ZSet数据结构是由哪些部分组成的,以及常用的命令有哪些?

求职者: ZSet是由一对一映射的有序键值对组成的,每个元素都有一个分数(score) ,用来进行排序。常用的命令包括:

  1. ZADD:向ZSet添加元素。
  2. ZRANGEZREVRANGE:根据排名范围获取元素。
  3. ZRANGEBYSCOREZREVRANGEBYSCORE:根据分数范围获取元素。
  4. ZREM:删除元素。
  5. ZINCRBY:增加元素的分数。

面试官: 最后一个工程题,如何使用ZSet实现724小时的热搜词排行榜,并每小时更新?

求职者: 使用Redis的ZSet来实现热搜词排行榜是非常合适的。我们可以将热搜词作为键,搜索次数作为分数存入ZSet。每当有新的搜索请求时,我们可以使用ZINCRBY命令来增加该热搜词的分数。为了实现每小时更新,我们可以设置一个定时任务,每小时对ZSet进行处理,比如移除分数最低的元素或者重置分数。此外,我们还可以使用滑动窗口算法来保留最近一小时内的热搜数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【汇编语言】流程转移和子程序

【汇编语言】流程转移和子程序 文章目录 【汇编语言】流程转移和子程序前言一、“转移”综述二、操作符offset三、jmp指令jmp指令——无条件转移jmp指令:依据位移进行转移两种段内转移远转移:jmp far ptr 标号转移地址在寄存器中的jmp指令转移地址在内存…

神经网络进阶

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

socket套接字在tcp客户端与tcp服务器之间的通信,以及socket中常用的高效工具epoll

1.socket(套接字)的概念 Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议,主要利用三元组【ip地址,协议&am…

10G网络布线:DAC线缆与AOC光缆的选择指南

在10G网络部署中,选择合适的传输介质是确保网络性能和可靠性的关键。本文将全面比较10G DAC高速线缆和10G AOC有源光缆,帮助您做出明智的选择。 10G DAC高速线缆 VS 10G AOC有源光缆 定义与构造 10G DAC高速线缆(Direct Attach Cable&…

配置有效的防爬虫技术保护网站

本文主要介绍了防爬虫的概念、目的以及一些有效的防爬虫手段。防爬虫是指网站采取各种技术手段阻止爬虫程序对其数据进行抓取的过程。为了保护网站的数据和内容的安全性,防止经济损失和恶意竞争,以及减轻服务器负载,网站需要采取防爬虫机制。…

文心一言4.0、智谱清言、MoonshotAI实测对比(上)

前言 前两天看到这张图,又刚好拿到了文心一言的4.0内测号,就想着把新版国内御三家横向对比测评一下。 文末领取免费领取AI学习基地 AI交流群 前一段时间也一直在研究复杂提示词(结构化提示词)向国内大模型迁移适配的问题&#…

matlab新手快速上手5(蚁群算法)

本文根据一个较为简单的蚁群算法框架详细分析蚁群算法的实现过程,对matlab新手友好,源码在文末给出。 蚁群算法简介: 蚁群算法是一种启发式优化算法,灵感来源于观察蚂蚁寻找食物的行为。在这个算法中,解决方案被看作是…

Fhopify:跨境电商行业迎来发展新机遇打造购物者天堂

随着全球化的推进和互联网的普及,跨境电商作为一种新型的商业模式,日益受到人们的关注和重视。它通过互联网平台,打破了地域限制,使得消费者可以便捷地购买来自世界各地的商品,同时也为企业提供了更广阔的市场和发展空间。在这样的背景下,跨境电商的新趋势和未来发展备受关注。…

ShardingSphere 5.x 系列【24】集成 Nacos 配置中心

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 前言2. ShardingSphereDriverURLProvider3. 方式一:基于 Nacos Java SDK…

初学python记录:力扣2739. 总行驶距离

题目: 卡车有两个油箱。给你两个整数,mainTank 表示主油箱中的燃料(以升为单位),additionalTank 表示副油箱中的燃料(以升为单位)。 该卡车每耗费 1 升燃料都可以行驶 10 km。每当主油箱使用了…

演示在一台Windows主机上运行两个Mysql服务器(端口号3306 和 3307),安装步骤详解

目录 在一台Windows主机上运行两个Mysql服务器,安装步骤详解因为演示需要两个 MySQL 服务器终端,我只有一个 3306 端口号的 MySQL 服务器,所以需要再创建一个 3307 的。创建一个3307端口号的MySQL服务器1、复制 mysql 的安装目录2、修改my.in…

基于springboot实现海滨学院班级回忆录的设计项目【项目源码+论文说明】计算机毕业设计

基于springboot实现海滨学院班级回忆录的设计演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了海滨学院班级回忆录的开发全过程。通过分析海滨学院班级回忆录管理的不足,创建了一个计算机管理海…

Andorid进程间通信之 UNIX SOCKET

1,什么是UNIX SOCKET UNIX SOCKET,域套接字,UNIX SOCKET可用于同一台设备进程间通信,它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序列号应答等,只需要将数据从一个进程复制到另一个进程&…

xray使用入门

简介 长亭科技旗下的一款网络安全漏洞扫描工具,用于检测和评估web应用程序的安全性。具有一下特点:检测速读快、检查范围广、代码质量高、高级可定制以及安全无危害。属于不开源的项目,用户直接下载xray的可执行文件,即可运行该工…

SSH远程连接docker容器-Linux-SSH -L 打隧道

问题:在物理机上用podman创建了一个容器,想SSH直接远程连接docker容器 解决方式: 步骤1: 在本地terminal输入以下命令: ssh -L 容器端口号:localhost:容器端口号 物理机用户名物理机ip -p 物理机端口号 即可,可新打…

1、k8s问题pod从service中剔除

一、起因 redis原来由两服务器的集群变为三服务器的集群,通过statefulset扩展了两节点,并把redis-app-0和redis-app-3从集群中去除,但是由于service路由后端不变,导致程序连接后端仍然可能到redis-app-0和redis-app-3 二、处理 …

WiFi、Ethenet、4G优先级切换

1、多网卡情况下如何调整优先级方案 按照目前公司前辈给出的方案&#xff0c;调整优先级的手段有两种&#xff1a; <1>.删除默认路由--route del 的方法 <2>.ifmetric源码提供的修改路由表的mteric的值来设置路由的优先级&#xff0c;metric越小优先级越高。 应…

C#开发中关于业务类与窗口文件以及数据库的大体连接流程(业务类的写法)

所有的开发在基准上&#xff0c;都是数据的交互&#xff0c;在VS中基于WinFrm的C#开发可以采用业务类与窗口类分开&#xff0c;以形成模块&#xff0c;接下来简述大体开发流程 业务类中&#xff0c;我们需要继承EntityClass类&#xff0c;来形成与窗口类的接口&#xff1a; pu…

Spring 事务 @Transactional 注解

上期我们讲解了Spring事务的两种实现&#xff0c;其中声明式注解使用了 Transactional 注解&#xff0c; 接下来我们学习 该注解的使用细节。 我们主要学习 Transactional注解当中的三个常见属性&#xff1a; rollbackFor&#xff1a;异常回滚属性&#xff0c;指定能够出发事…

河道采砂执法监管信息化平台:科技赋能,智慧监管

随着信息技术的飞速发展&#xff0c;信息化平台已经成为提升行业监管效率和水平的重要工具。河道采砂作为水利资源管理的重要环节&#xff0c;其执法监管同样需要与时俱进&#xff0c;利用先进技术手段提升监管效能。河道采砂执法监管信息化平台便是这一背景下的产物&#xff0…