【面经合集】当 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##蔚来#
互联网面经合集 文章被收录于专栏

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

全部评论

相关推荐

05-10 16:15
已编辑
广东第二师范学院 Java
医疗类的公司,主要业务也是和医疗有关的。不过我项目一个是代驾,一个是IM,没啥相关的,全程聊天,没啥八股更没手撕,只能整理出一些问题。1.自我介绍————xxx学校,java学习路线,学习接触了什么项目,算法刷多少,八股背多少,我上来就说我java路线走完了,八股背很多。2.介绍一下项目———b站学的,跟着做的,做过大街类项目外卖点评,音视频和简历上的代驾和IM等3.项目是怎么开发的,怎么学的———跟着视频学的4.前端是自己开发的吗———不是,项目给的模板。我说我前端就学几个月,更习惯用trae,面试官笑了5.IM是怎么实现的———netty或者spring都有websocket,用websocket实现。没多问了6.项目中支付是怎么做的———我说支付一般是微信,微信支付个人开不了,一般是模拟支付。7.谈谈你对future的理解———异步获取任务结果,runnable任务callable的get8.如果支付链路很长怎么办———completefuture处理支付前的业务逻辑,然后支付用mq异步9.redis和mongodb在项目中怎么用的———redis保存临时的经纬度,mongodb持久化用10.哪些地方用的回调———忘记怎么答了11.项目怎么部署的,本机还是虚拟机———虚拟机,Linux,用docker搜一下很快12.有做过多节点部署吗?———nginx吗,有了解,但我没真做过13.jvm了解吗———我说我八股贼熟,随便问,然后面试官让说下gc,我说那就说下cms和g1,然后就是关于这2个垃圾回收器的特点14.你对我们公司了解吗———了解(看过ssob主页)15.学校在哪里,实习怎么办———我说租房...下面开始我的反问1.实习生主要干什么———完成我们分配拆解的项目需求...2.部门业务是什么,有多少开发员工———医疗....,大概有30多个开发3.实习福利待遇———面试官自己不清楚4.公司加班调休策略———加班算调休,可以替换第二天的时间整个面试不到半小时,感觉可能项目不匹配没啥好问题   
查看34道真题和解析 面试问题记录
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客企业服务