面试官常问的两种编程思想通常指面向对象(OOP)与面向过程(POP),或者面向接口编程。它们“不行”的地方在于滥用或理解浅显。面向过程容易导致代码耦合度高、维护困难,尤其在复杂系统中步骤环环相扣,修改一处牵动全身。面向对象若过度设计,会增加系统复杂度。面向接口编程若只知其然不知其所以然,无法解决真正的依赖问题。面试官考察的核心并非死记硬背概念,而是是否理解其解决耦合、提高内聚的初衷,以及是否能在实际开发中权衡使用。解决方案是深入理解设计思想背后的场景,避免为了用而用,注重代码的可维护性与扩展性。
面试官:请谈一谈你对 OOP 的理解?
标题中的问题可以说是很多公司一面的必问题,作为一种划时代的编程思想,OOP(Object-Oriented-Programming)-面向对象编程的伟大无需赘言,而 Java 作为面向对象编程的课代表,更是将这种编程思想推向巅峰。那么在我们拿到这个问题的时候该如何回答呢?首先,我们需要搞明白的是,除了面向对象之外还有面向什么?什么是对象?在讨论面向对象之前,想问一句:“你知道什么是对象吗?在 Java 的世界中,对象应该具备什么特点?”1、对象具有属性和行为 2、对象具有变化的状态 3、对象具有唯一性 4、对象都是某个类别的实例 5、一切皆为对象,真实世界中的所有事物都可以视为对象 面向对象与面向过程的区别 目前,编程世界的两大主流思想是面向过程与面向对象!面向过程:将问题拆分为多个步骤,分步骤顺序解决,环环相扣,互相耦合,互相穿插。典型代表:C 语言 面向对象:将问题抽象化,定义对象的属性,方法等,用对象驱动方法的方式解决问题,强调高内聚低耦合,灵活度高,对于复杂代码的后期维护有先天优势,典型代表:Java 语言。
拿来吧你!关于"到底什么是面向接口编程?"的分析论文
一、面试官这样询问的用意 面试官提问一个问题的时候,我们需要不是马上去答复,而是要揣摩出面试官提问的用意,这样才能够给出更全面的回答。关于这个问题,我个人猜想面试官的大概用意如下: 1、看你是否了解过面向接口编程 (不用奇怪,很多人只是听说过,有个模糊的概念,叫他说并不一定能说清楚) 2、看你是否清楚面向接口编程的使用初衷 (如果一个技术/思想出现没有解决存在的某些问题,那它存在的价值在哪里?) 3、看你是否真正的将面向接口编程运用到开发中?二、什么是接口 在介绍什么是面向接口编程之前,让我们先来认识下什么是接口,这样才能够"知其然,知其所以然"。接口,英文名叫 Interface,可以理解成是一种标准 (规范),在广义泛指一组标准的集合,它规定了实现该接口的类或者接口必须也拥有这一组规则,当然存在一种特殊情况,即空接口 (不存在任何方法的接口) 后续会介绍。
春招面试官最爱问的 IoC 和 AOP,你还没搞明白吗?
AOP 为什么叫做切面编程?首先声明:IoC & AOP 不是 Spring 提出来的,他们在 Spring 之前其实已经存在了,只不过当时更加偏向于理论。Spring 在技术层次上将这两个思想进行了很好的实现。什么是 IoC IoC (Inversion of control ) 控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java 开发领域对象的创建以及管理的问题。例如:现有类 A 依赖于类 B 传统的开发方式:往往是在类 A 中手动通过 new 关键字来 new 一个 B 的对象出来 使用 IoC 思想的开发方式:不通过 new 关键不是来创建对象,而是通过通过 IoC 容器 (Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面放过去即可。从以上两种开发方式的对比来看:我们“丧失了一个权力”(创建、管理对象的权力),从而也得到了一个好处 (不用再考虑对象的创建、管理等一系列的事情) 为什么叫控制反转 控制:指的是对象创建 (实例化、管理) 的权力 反转:控制权交给外部环境 (Spring 框架、IoC 容器) IoC 解决了什么问题 IoC 的思想就是两方之间不互相依赖,由第三方容器来管理相关资源。这样有什么好处呢?对象之间的耦合度或者说依赖程度降低; 资源变得容易管理;比如你用 Spring 容器提供的话很容易就可以实现一个单例。
程序员面试最容易踩的 6 个坑,90% 的人倒在了第三个
坑三:把“标准答案”背得太熟,却答不出“为什么”这是让很多看起来“准备充分”的候选人莫名其妙挂掉的核心原因。面试官问:"ConcurrentHashMap 为什么不允许插入 null 值?”你脱口而出:“因为 JDK 源码里有判空逻辑,会抛出 NullPointerException。”这个答案对吗?对。能过吗?悬。因为你只回答了“是什么”,没回答“为什么”。这种“标准答案”式的回答,在中小公司可能够用,但在大厂面试中,面试官会判定你“思考力一般”——只是背下了结论,缺乏深度理解。坑一:听完题直接闷头写代码 这是技术面试中最高频的错误,没有之一。很多候选人一听到算法题,发现是自己做过的,立刻进入“肌肉记忆模式”——闷头就写,全程一言不发。你以为在展示“熟练度”,面试官看到的是:沟通能力差、缺乏协作意识、甚至怀疑你在背答案。大厂的算法面试通常有四个独立评分维度:分析能力、沟通技巧、代码质量、代码测试。代码写得再漂亮,前两项零分照样挂。
FAQ
面试官问面向对象和面向过程的区别主要想考察什么?
主要考察候选人是否理解两种思想在耦合度、维护性上的差异,以及是否具备根据场景选择合适设计思想的能力,而非单纯背诵定义。
面向接口编程的核心价值是什么?
核心价值在于抽离内部实现进行外部沟通,实现内部变动而不影响外部交互,达到高内聚低耦合的目的,标准统一即可无缝切换实现。
为什么背了标准答案面试还是会挂?
因为只回答了“是什么”没回答“为什么”,面试官判定思考力一般,缺乏深度理解,大厂更看重分析思维和对技术初衷的理解。