【面经合集】当 deepseek 遇上蔚来的面试|Java后端|01

🌟【友情提示】本篇面经来自粉丝投稿+智能润色,点击进入 -> 🔗互联网面经大全 围观25届校招修罗场!!每个技术细节都经过脱敏处理,请勿对号入座~

alt

🌈 面试官:

看你简历有自动化测试经验,先做个自我介绍吧

💬小基:

面试官好,我是22届计算机专业的小基,之前在XX公司做过半年的测试开发。主要负责接口自动化框架搭建,用Python+Requests写过数据驱动测试模块,也参与过性能测试方案设计。业余时间喜欢用JMeter做接口压测实验,最近在学Docker部署测试环境...

🌈 面试官:

说说面向对象的四大特征怎么理解?

💬小基:

四大金刚嘛!抽象就像做蛋糕模具,抽离关键特征;封装好比自动咖啡机,把研磨萃取打包成按钮;继承类似手机型号迭代,Note系列继承S系列功能;多态就像USB接口,鼠标键盘都能插。

🌈 面试官:

展开说说封装,public成员算破坏封装吗?

💬小基:

封装就像快递盒📦,把数据和操作打包。举个栗子,做温度传感器类:

class Sensor:
    def __init__(self):
        self._raw_data = 0  # 底层ADC原始值
        
    @property
    def temperature(self):
        """ 将原始值转换为摄氏度 """
        return self._raw_data * 0.25 - 273.15

这里隐藏了_raw_data的处理细节。public成员就像没封口的盒子,虽然能用但可能被乱改,所以建议用属性访问控制。

🌈 面试官:

写个单例模式看看?

💬小基:

用装饰器最方便,比如全局日志管理器:

def singleton(cls):
    instances = {}
    def get_instance(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]
    return get_instance

@singleton
class AppConfig:
    def __init__(self):
        self.theme = "dark"

这样配置对象全局唯一,第一次初始化后直接复用。

🌈 面试官:

进程和线程的区别说下?

💬小基:

好比餐馆后厨:

  • 进程是独立厨房,有自己厨具(内存空间)
  • 线程是厨房里的多个厨师,共享厨具但要协调

具体差异三点:

维度 进程 线程
资源开销 大(独立内存)
通信方式 管道/消息队列 共享变量
崩溃影响 不影响其他进程 整个进程挂掉

🌈 面试官:

怎么保证线程安全?

💬小基:

三个锦囊:

  1. 同步锁:像超市单入口,用with threading.Lock()
  2. 原子操作:如Python的Queue自带线程安全
  3. 不可变对象:像元组数据只读最安全

举个转账例子:

class BankAccount:
    def __init__(self):
        self.balance = 0
        self.lock = Lock()
        
    def transfer(self, amount):
        with self.lock:
            self.balance += amount

🌈 面试官:

父类方法只想被子类调用,怎么做?

💬小基:

Python里用双下划线前缀:

class Base:
    def __secret_method(self):
        print("子类专用")

class Child(Base):
    def call_secret(self):
        self._Base__secret_method()  # 强制调用

不过更推荐用abc模块定义抽象方法,约束子类必须实现。

🌈 面试官:

Cookie和Session的区别?

💬小基:

这俩像会员卡和后台档案:

Cookie Session
存储位置 浏览器本地 服务器内存/Redis
安全性 可能被篡改 较安全
生命周期 可设置过期时间 浏览器关闭即失效

比如登录状态:服务端生成session_id存Cookie,每次请求带这个"会员卡号"查服务器档案。

🌈 面试官:

接口测试要注意哪些点?

💬小基:

重点检查五个方面:

  1. 边界值:比如年龄传-1或200
  2. 鉴权机制:不带token能否访问
  3. 幂等性:重复提交订单是否防重
  4. 性能基准:响应时间是否陡增
  5. 错误码覆盖:404/500等异常场景

上次遇到个bug:分页参数传超大数值导致数据库CPU飙高,所以现在测试必测page_size=10000的情况。

📖 总结

这次面试持续了70分钟,面试官问得很全面。最大的感受是基础概念要理解本质,比如单例模式面试官追问了懒汉/饿汉式的选择场景。网络部分的问题都答上来了,但测试用例设计那块让我现场设计登录测试用例时,一开始漏了安全测试点,后来补充了SQL注入和暴力破解的检测。

建议准备测开岗位的同学:

  1. 多画架构图理解Web请求流程
  2. 线程安全相关的问题要准备实际案例
  3. 登录模块测试要分功能/安全/兼容性多个维度
  4. 遇到不会的问题先讲思路,别直接说不知道

最后面试官让我反问环节,问了团队用的自动化测试框架,感觉和他们现在用的技术栈匹配度挺高的。总之项目经验结合基础知识才是王道,继续加油啦!

#deepseek##java##蔚来#
互联网面经合集 文章被收录于专栏

本专栏收集了互联网上的面试经验贴

全部评论

相关推荐

02-25 18:53
门头沟学院 Java
这是一波二面挂~25.2.12字节番茄一面1.手撕:单例模式双重检查锁定+中缀表达式转后缀(不考虑括号版)+考虑括号的思路2.静态方法和非静态方法的区别,synchronized在静态和非静态方法下的区别3.浏览器输入url到返回的整个过程4.TCP和UDP的区别,应用场景5.TCP可靠传输中,5个按顺序的包第三个丢失会发生什么?(服务端出现空洞,不再接收4和5,连续发送第二个的ack;客户端收到两个ack进行快速重传,或到时间后超时重传;后续重传3号成功后可以正常接收4和5)6.mysql的mvcc是做什么的,隔离级别,选择其中两个举例说明一下区别7.场景:所有数据都会经过函数,如何在里面对所有数据等概率的采样k条?25.2.13字节番茄二面1.数据库join关联查询大表驱动小表还是小表驱动大表2.联合索引(A,B,C)和单个索引ABC的区别3.redis中string存储出现的内存碎片是怎么回事4.redis的哈希,缓存查库布隆过滤器无法有效过滤,且不加锁的情况如何让用户无感知的情况下查库5.数据库分库分表解决什么问题?什么场景需要分库分表6.springboot单体转为微服务后有什么好处,单体springboot也可以完成业务拆分,为什么还要微服务7.手撕:字符串转为32位整数8.并发编程提高效率的根本原因9.排查线上出现大量close wait,可能问题是什么,产生的后果是什么总结:是被年前投的番茄捞起来了,一面很顺利,面完四分钟约二面,二面感觉回答的时候虽然尽量答得比较完善,但似乎没说到面试官的点子上,虽然整体感觉还行,但心里总是玄乎,果然第二天感谢信#牛客AI配图神器#
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客企业服务