美团实习—后端开发凉经

面试经历分享

日期: 4月22日
时长: 50分钟

意外之喜        
        没想到在面试过程中,我再次被选中进行下一轮,这确实让我感到有些意外和欣喜。这次面试经历对我而言,不仅是一次技能的检验,更是一次知识的深入学习和成长的机会。

方向与选择
        当面试官问及为何从测试方向转向研发方向时,我诚实地回应,表达了研发方向对我吸引力的一部分原因在于其相对较高的薪资水平。但同时,我也强调了自己对技术探索的热爱和对编程的浓厚兴趣,这些都是驱使我转向研发方向的动力。

技能与优势
        尽管我在测试方向有实习经验,但我坚信在研发方向上也有我的独特优势。我具备扎实的编程基础,对常见的数据结构如数组、链表、栈、队列等都有深入了解。此外,我能够灵活运用图的两种搜索方式DFS(深度优先搜索)和BFS(广度优先搜索),以及多种算法排序(如冒泡排序、快速排序、归并排序等),并清楚它们的时间复杂度和空间复杂度。

技术与细节
        当被问及基数排序时,我能够清晰地解释其工作原理和优势。在数据库方面,我对MySQL的ACID特性(原子性、一致性、隔离性、持久性)有深入的理解,并能够解释不同隔离级别的区别和适用场景。对于none和空字符串的区别、深拷贝与浅拷贝的差异、C++野指针的危害等知识点,我都能够准确而详细地回答。

        此外,我还对try语句块中的finally子句有清晰的认识,知道它无论如何都会被执行。对于构造函数和析构函数的特点,以及析构函数是否能调用虚函数等问题,我也给出了准确的回答。

实际应用与场景
        在面试过程中,我还被问及缓存穿透的场景以及Redis如何实现可持久化。我能够结合实际应用场景,解释缓存穿透的成因和解决方案,并阐述Redis通过RDB(快照)和AOF(追加文件)两种方式实现数据持久化的原理。

        对于MVC(模型-视图-控制器)模型和DDD(领域驱动设计)模型,我也能够阐述它们的基本概念和在实际软件开发中的应用。同时,我对HTTP常用的状态码也有深入的了解,并能够解释它们各自的含义和用途。

实战能力
        在手撕代码环节,我面临了“分割IP”这一题目。在短暂的思考后,我迅速制定了解决方案,并通过编写代码成功实现了IP地址的分割。这一环节不仅检验了我的编程能力,也展现了我在面对实际问题时的快速响应和解决问题的能力。

总结
        这次面试经历对我来说是一次宝贵的经验。通过面试,我不仅展示了自己的技能和优势,也学习到了许多新的知识点和解决方案。我相信,这些经验和知识将对我未来的职业发展产生积极的影响。

面试问题提炼与回答建议

为什么从测试转向研发?

        回答建议:在实习期间,我深入了解了测试领域,并积累了丰富的经验。然而,我逐渐发现,研发工作能够更直接地参与到产品的核心开发中,实现更多创新。此外,研发工作的薪酬通常更高,这也是吸引我转向研发的一个重要因素。我相信,凭借我的测试背景和对技术的深入理解,我能够在研发领域发挥出色的作用。

相对于测试,你在研发方向的优势是什么?

        回答建议:在测试实习期间,我培养了严谨的逻辑思维和细致的观察力,能够迅速发现系统中的潜在问题。这些能力在研发中同样重要,可以帮助我编写出更健壮、更可靠的代码。此外,我对技术的深入理解和快速学习能力也将使我能够快速适应研发工作,为团队贡献价值。

请举例几种常见的数据结构。

        回答示例:常见的数据结构包括数组、链表、栈、队列、树(如二叉树、红黑树等)、图等。

请介绍图的两种搜索方式:DFS和BFS。

        回答示例:DFS(深度优先搜索)是从某个顶点出发,尽可能深地遍历图,直到达到没有未访问过的顶点的叶子节点,然后回溯到前一个节点,继续搜索未访问过的节点。BFS(广度优先搜索)则是从某个顶点出发,先访问所有相邻的节点,然后再访问这些节点的相邻节点,层层递进,直到遍历完整个图。

介绍几种算法排序的例子,以及他们的空间复杂度。

        回答示例:常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等。例如,冒泡排序的空间复杂度为O(1),因为它只需要一个额外的空间来交换元素。而归并排序的空间复杂度为O(n),因为它需要额外的空间来存储归并过程中的临时数据。

你了解基数排序吗?

        回答示例:是的,我了解基数排序。基数排序是一种非比较型整数排序算法,其通过将整数按位数切割成不同的数字,然后按每个位数分别比较进行排序。基数排序通常用于对大量整数进行排序,其时间复杂度为O(nk)(其中n是待排序元素个数,k是数字的位数)。

请介绍MySQL的ACID功能。

        回答示例:MySQL的ACID特性保证了数据库事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这些特性确保了数据库在多个事务并发执行时的正确性和可靠性。

你知道MySQL的哪些隔离级别?

        回答示例:MySQL支持四种隔离级别,分别是读未提交、读已提交、可重复读和串行化。这些隔离级别提供了不同程度的数据可见性和并发性能。

none和空字符串的区别是什么?

        回答示例:none通常表示一个空值或不存在的值,在Python中None是一个特殊的常量,表示没有值或空值。而空字符串是一个长度为0的字符串,即它不包含任何字符。在数据库中,NULL(类似于Python中的None)和空字符串是两种不同的概念,前者表示缺失值或未知值,后者表示一个明确的、但不包含任何内容的字符串。

SELECT NULL=NULL会怎么样?

        回答示例:在SQL中,NULL表示一个未知或缺失的值。因此,NULL=NULL的比较结果不是TRUE,而是NULL。这是因为NULL不代表任何具体的值,所以无法确定两个NULL是否相等。

深拷贝和浅拷贝的区别是什么?

        回答示例:深拷贝会创建一个新的对象,并复制原始对象的所有内容,包括其内部的子对象。这样,修改新对象不会影响原始对象。而浅拷贝则只复制原始对象的顶层结构和引用,不会递归地复制内部子对象。因此,修改浅拷贝中的子对象可能会影响原始对象。

C++中的野指针是什么?

        回答示例:野指针是指已经被释放的内存,但是指针的值没有被置为NULL,仍然指向原来的内存地址。这样的指针是危险的,因为它们可能会导致程序崩溃或数据损坏。

try里面的finally你了解吗?一定会被执行吗?

        回答示例:finally块是Java异常处理机制的一部分,用于在try块和catch块之后执行清理代码。无论try块中的代码是否抛出异常,finally块中的代码都会被执行。但是,如果在finally块执行之前程序被终止(如System.exit()方法被调用或JVM崩溃),则finally块可能不会被执行。

构造函数的特点是什么?

        回答示例:构造函数是一种特殊的方法,用于初始化新创建的对象。它的特点包括:构造函数名与类名相同,没有返回值类型,可以在创建对象时自动调用,可以重载但不能被继承,主要用于完成对象的初始化工作。

析构函数是否能调用虚函数?

        回答示例:在C++中,析构函数中可以调用虚函数,但通常不建议这样做。因为当析构函数被调用时,对象的生命周期即将结束,此时调用虚函数可能会导致不确定的行为,特别是如果虚函数依赖于对象的某些状态或资源,而这些状态或资源在析构过程中可能已经被释放或不再有效。

缓存穿透的场景是什么?

        回答示例:缓存穿透是指查询一个不存在的数据,由于缓存中也没有,导致每次都要去数据库中查询,造成缓存和数据库资源的浪费,甚至可能让数据库崩溃。常见的解决方案是将空对象也缓存起来或者采用布隆过滤器等数据结构来快速判断数据是否存在。

Redis如何实现可持久化?

        回答示例:Redis提供了两种持久化方式:RDB(Redis DataBase)和AOF(Append Only File)。RDB是默认的持久化方式,它按照一定的时间间隔将数据快照写入二进制文件。AOF持久化则是通过记录Redis的所有写命令并追加到一个文件中来实现数据的持久化,这种方式可以提供更好的数据安全性,但可能会影响Redis的性能。

MVC模型和DDD模型是什么?

        回答示例:MVC(Model-View-Controller)模型是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)表示数据和业务逻辑,视图(View)表示用户界面,控制器(Controller)处理用户输入并根据输入更新模型和视图。DDD(Domain-Driven Design)模型则是一种软件开发方法论,它强调将业务逻辑和领域知识作为软件设计的核心,通过建立丰富的领域模型来指导系统的设计和开发。

HTTP常用的状态码有哪些?

        回答示例:HTTP状态码是服务器对客户端请求的响应状态的一个三位数字代码。常见的状态码包括:200(OK,请求成功)、404(Not Found,未找到资源)、403(Forbidden,禁止访问)、500(Internal Server Error,服务器内部错误)等。

手撕代码:分割IP

        题目描述:给定一个字符串形式的IP地址,如"192.168.1.1",请编写一个函数将其分割成四个部分并返回一个包含这四个部分的列表。

示例代码(Python):

def split_ip(ip_address):  
    return ip_address.split('.')  
  
# 测试代码  
ip = "192.168.1.1"  
print(split_ip(ip))  # 输出:['192', '168', '1', '1']
        请注意,以上代码和回答示例是基于常见的面试问题和知识点整理的,具体回答时还需要根据面试的实际情况和语境进行适当的调整和补充。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL:设计数据库与操作

设计数据库 1. 数据建模1.1 概念模型1.2 逻辑模型1.3 实体模型主键外键外键约束 2. 标准化2.1 第一范式2.2 链接表2.3 第二范式2.4 第三范式 3. 数据库模型修改3.1 模型的正向工程3.2 同步数据库模型3.3 模型的逆向工程3.4 实际应用建议 4. 数据库实体模型4.1 创建和删除数据库…

10.8K star!史上最强Web应用防火墙雷池WAF

长亭雷池SafeLine是长亭科技耗时近 10 年倾情打造的WAF(Web Application Firewall), 一款敢打出口号 “不让黑客越雷池一步” 的 WAF,愿称之为史上最强的一款Web应用防火墙,足够简单、足够好用、足够强的免费且开源的 WAF,基于业…

leetcode-20-回溯-切割、子集

一、[131]分割回文串 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 分析&…

JAVA连接FastGPT实现流式请求SSE效果

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! 一、先看效果 真正实流式请求,SSE效果,SSE解释&am…

一切为了安全丨2024中国应急(消防)品牌巡展武汉站成功召开!

消防品牌巡展武汉站 6月28日,由中国安全产业协会指导,中国安全产业协会应急创新分会、应急救援产业网联合主办,湖北消防协会协办的“一切为了安全”2024年中国应急(消防)品牌巡展-武汉站成功举办。该巡展旨在展示中国应急(消防&am…

Python基础002

Python数据类型 1、字符串&#xff08;str&#xff09; str3 """I miss you so much""" print("str3 ", str3,type(str3)) str3 I miss you so much <class str>2、整数&#xff08;int&#xff09; str1 55 print(&quo…

【面试题】TLS和SSL协议的区别

TLS&#xff08;Transport Layer Security&#xff09;和SSL&#xff08;Secure Sockets Layer&#xff09;协议都是用于在网络上建立安全通信连接的协议&#xff0c;但它们在多个方面存在区别。以下是TLS和SSL协议之间区别的详细分析&#xff1a; 1. 发展历程与标准化 SSL&a…

如何找BMS算法、BMS软件的实习

之前一直忙&#xff0c;好久没有更新了&#xff0c;今天就来写一篇文章来介绍如何找BMS方向的实习&#xff0c;以及需要具备哪些条件&#xff0c;我的实习经历都是在读研阶段找的&#xff0c;读研期间两段的实习经历再加上最高影响因子9.4分的论文&#xff0c;我的秋招可以说是…

分子AI预测赛Task2笔记

下面所述比较官方的内容都来自官方文档 ‍‌⁠‌‍​​​‌​​⁠​​​​​&#xfeff;​​​&#xfeff;‍‬​​‍⁠‍‍​​‬​&#xfeff;‌​​​‌‍‬​​​​​​‍‌Task2&#xff1a;赛题深入解析 - 飞书云文档 (feishu.cn) 赛题背景 强调了人工智能在科研领域&…

探囊取物之多形式注册页面(基于BootStrap4)

基于BootStrap4的注册页面&#xff0c;支持手机验证码注册、账号密码注册 低配置云服务器&#xff0c;首次加载速度较慢&#xff0c;请耐心等候&#xff1b;演练页面可点击查看源码 预览页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/preview/ly4gax38ub9j 演练页…

晚上睡觉要不要关路由器?一语中的

前言 前几天小白去了一个朋友家&#xff0c;有朋友说&#xff1a;路由器不关机的话会影响睡眠吗&#xff1f; 这个影响睡眠嘛&#xff0c;确实是会的。毕竟一时冲浪一时爽&#xff0c;一直冲浪一直爽……刷剧刷抖音刷到根本停不下来&#xff0c;肯定影响睡眠。 所以晚上睡觉要…

MQTT协议详述

MQTT 概述 消息队列遥测传输&#xff08;英语&#xff1a;Message Queuing Telemetry Transport&#xff0c;缩写&#xff1a;MQTT&#xff09;&#xff0c;是基于发布&#xff08;Publish&#xff09;/订阅&#xff08;Subscribe&#xff09;范式的消息协议&#xff0c;位于…

BurpSuite抓IOS设备HTTPS流量

一、简述&#xff1a; Burp 这个工具做过 web 安全的人都应该用过&#xff0c;是个非常强大的抓包工具。在 PC 的浏览器上直接配置代理就行了&#xff0c;本篇文章就来介绍一下如何用 Burp 抓 IOS 设备上的流量&#xff0c;很多文章都介绍过怎么抓包&#xff0c;但是很多坑都没…

Linux驱动开发实战宝典:设备模型、模块编程、I2C/SPI/USB外设精讲

摘要: 本文将带你走进 Linux 驱动开发的世界,从设备驱动模型、内核模块开发基础开始,逐步深入 I2C、SPI、USB 等常用外设的驱动编写,结合实际案例,助你掌握 Linux 驱动开发技能。 关键词: Linux 驱动,设备驱动模型,内核模块,I2C,SPI,USB 一、Linux 设备驱动模型 Li…

java反射和注解

反射 获取class对象的三种方法 ①&#xff1a;Class.forName("全类名"); ②&#xff1a;类名.class ③&#xff1a;对象.getclass(); 代码样例 package com.ithema;public class Main {public static void main(String[] args) throws ClassNotFoundException {//第…

【JavaEE精炼宝库】多线程进阶(2)synchronized原理、JUC类——深度理解多线程编程

一、synchronized 原理 1.1 基本特点&#xff1a; 结合上面的锁策略&#xff0c;我们就可以总结出&#xff0c;synchronized 具有以下特性(只考虑 JDK 1.8)&#xff1a; 开始时是乐观锁&#xff0c;如果锁冲突频繁&#xff0c;就转换为悲观锁。 开始是轻量级锁实现&#xff…

QT+winodow 代码适配调试总结(二)

已经好多年了&#xff0c; linux环境下不同版本的QT程序开发和部署&#xff0c;突然需要适配window环境程序调试&#xff0c;一堆大坑&#xff0c;还真是一个艰巨的任务&#xff0c;可是kpi下的任务计划&#xff0c;开始吧&#xff01;&#xff01; 1、首先我们自定义的动态库…

【STM32HAL库学习】通信方式:USART、IIC、SPI

通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 通信接口区别 名称引脚双工时钟电平设备USARTTX、RX全双工异步单端点对点I2CSCL、SDA半双工同步单端多设备SPISCLK、MOSI、MISO、CS全双工同步单端多设备CANCAN_H、CAN_L半双工异步差分多设…

【数值计算库-超长笔记】Python-Mpmath库:高精度数值计算

原文链接&#xff1a;https://www.cnblogs.com/aksoam/p/18279394 更多精彩&#xff0c;关注博客园主页&#xff0c;不断学习&#xff01;不断进步&#xff01; 我的主页 csdn很少看私信&#xff0c;有事请b站私信 博客园主页-发文字笔记-常用 有限元鹰的主页 内容&#xf…

类与对象完结

1.匿名类 先看一个例子 class A { public:A(int a 0):_a(a){cout << "A(int a)" << endl;}~A(){cout << "~A()" << endl;}void Print(){cout << _a << endl;} private:int _a; };int main() {A aa1(10);aa1.Print(…