2021专业课面试准备(2020面试问题回忆+自己补充)

1、敏捷开发
敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
简单地来说,敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。

敏捷开发与 DevOps
DevOps 是 Development 和 Operations 的合成词,其目标是要加强开发人员、测试人员、运维人员之间的沟通协调。
如何实现这一目标呢?需要我们的项目做到持续集成、持续交付、持续部署。
时下流行的 Jenkins、Bamboo,就是两款优秀的持续集成工具。
而 Docker 容器则为 DevOps 提供了强大而有效的统一环境。

2、ocp解释和实现
开闭原则:对修改关闭,对扩展开放
实现:定义统一的接口,各子类去实现接口的方法。然后上下文类持有接口的引用,就可以调用具体的实现类的方法。当需要扩展增加子类型时,只要new一个类,去实现接口定义的方法即可

3、几个重要的原理
降低访问耦合:迪米特法则、接口分离原则
降低继承耦合:里氏替换原则、组合替代继承
提高内聚:单一职责原则、集中信息与行为
方便变更:OCP开闭原则、DIP依赖倒置原则

4、软件架构4+1视图
用例视图、逻辑视图、处理视图、物理视图、开发视图
*场景视图,*又称“用例视图”:它综合所有的视图。用于刻画构件之间的相互关系,将四个视图有机地联系起来。可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系。
逻辑视图:逻辑视图关注功能,不仅包括用户可见的功能,还包括为实现用户功能而必须提供的"辅助功能模块";它们可能是逻辑层、功能模块等。当采用面向对象的设计方法时,逻辑视图即对象模型。
开发视图:描述软件在开发环境下的静态组织。开发视图关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方SDK和现成框架、类库,以及开发的系统将运行于其上的系统软件或中间件。开发视图和逻辑视图之间可能存在一定的映射关系:比如逻辑层一般会映射到多个程序包等。
*处理视图:*描述系统的并发和同步方面的设计。处理视图关注进程、线程、对象等运行时概念,
以及相关的并发、同步、通信等问题。处理视图和开发视图的关系:开发视图一般偏重程序包在编译时期的静态依赖关系,而这些程序运行起来之后会表现为对象、线程、进程,处理视图比较关注的正是这些运行时单元的交互问题。
物理视图:描述软件如何映射到硬件,反映系统在分布方面的设计。物理视图关注"目标程序及其依赖的运行库和系统软件"最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。物理视图和处理视图的关系:处理视图特别关注目标程序的动态执行情况,而物理视图重视目标程序的静态位置问题;物理视图是综合考虑软件系统和整个IT系统相互影响的架构视图。

5、为什么要信息隐藏?
信息是模块的秘密,指的是根据需求分配的职责,以及内部实现机制。隐藏就是希望把未来的改变限制在本地,隐藏独立变化的系统细节,分割不一致变化的模块,只暴露出不容易变化的接口。所以,信息隐藏就是隐藏你认为会改变的设计决策,把这个设计秘密指派给单独的模块,封装每个秘密,使得即使发生变化,变化也不会对其他部分产生影响。

6、功能需求,非功能需求(简单,略)

7、谈谈持续集成特点、优点、缺点(简单,略)

8、一段代码找缺陷并改正(略)

9、结对编程的概念(简单,略)

10、软工学科与计科的区别与优势
满足用户的需要开发相应的系统;探索计算和建模方法并改进

11、软件测试相关概念,是否最佳的软件测试方法
黑白盒测试定义以及各自的优缺点。具体展开即可。

12、什么是重构?重构的时机?
修改软件系统的严谨方法,再不改变软件外部表现(及系统功能)的情况下,改进其内部结构(即提升详细设计的质量)

13、谈谈对抽象和封装的理解
抽象,是指从众多的事务中抽取出具有共同的、本质性的特征作为一个整体。是共同特质的集合形式。
封装,是将通过抽象所得到的数据信息和操作进行结合,使其形成一个有机的整体。对内执行操作,对外隐藏细节和数据信息。
两者的区别,在于抽象是一种思维方式,而封装则是一种基于抽象性的操作方法。我们通过抽象所得到数据信息及其功能,以封装的技术将其重新聚合,形成一个新的聚合体,也就是类。或者说,两者是合作者的关系,如果没有抽象,封装就无从谈起,如果没有封装,抽象也将没有意义。

14、Alpha测试和Beta测试(考试说AB测试也是这个)分别是什么,简要解释
两者的主要区别是测试的场所不同。Alpha测试是指把用户请到开发方的场所来测试,
beta测试是指在一个或多个用户的场所进行的测试。Alpha测试的环境是受开发方控制的,
用户的数量相对比较少,时间比较集中。
而beta测试的环境是不受开发方控制的,谁也不知道用户如何折磨软件,用户数量相对比较多,时间不集中。一般地,alpha测试先于beta测试执行。一些软件开发公司把Alpha测试是对一个早期的、不稳定的软件版本所进行的验收测试,而Beta测试看成是对一个晚期的、更加稳定的软件版本所进行的验收测试。

15、给一段代码,分析是什么内聚、耦合!(四个选项,说明为什么选为什么不选)
设计模式:(整理各种设计模式的应用场景和优缺点)
2020复试考过!!! (2021年未考设计模式)
1、门面、适配器、装饰者模式区别
2、代理模式的使用场景
3、简述命令模式,有哪些使用场景
4、迭代器模式
5、一个类违反单一职责
6、组合模式
7、给了UML图(策略模式),说出是什么模式,何时使用

各种设计模式的应用场景:
创建型模式:
创建型模式

1. 简单工厂的应用场景
工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂;客户端只要知道传入工厂类的参数,对于如何创建对象并不关心。

2. 工厂方法的应用场景
客户端不知道他所需要对象的类,抽象工厂类通过其子类来指定创建哪个对象。

3. 抽象工厂模式有以下应用场景:
·抽象工厂模式可以帮助系统独立于产品的创建、构成、表现。抽象工厂模式可以让系统灵活配置拥有多个产品族中的某一个。
·一个产品族的产品应该被一起使用,抽象工厂模式可以强调这个限制。
·如果想提供一个产品库,抽象工厂模式可以帮助暴露该库的接口,而不是实现。

4. 单件模式有以下应用场景:
·某个类只有一个实例,并且作为客户公共的访问点。
·当单一实现需要被继承,客户能够用一个子类的实例,而不需要修改它的代码。

5. 建造者模式有以下应用场景:(eg:生产汽车需要分别生产汽车各个配件)
·需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员变量;
·需要生成的产品对象的属性相互依赖,需要指定其生成顺序;
·对象的创建过程独立于创建该对象的类;
·隔离复杂对象的创建和使用,并使相同的创建过程可以创建不同的产品

6. 原型模式有以下应用场景:(eg:孙悟空拔毛变小猴子)
(1)创建新对象成本较大(例如初始化需要占用较长的时间、占用太多的CPU资源或网络资源),新对象可以通过复制已有对象来获得,如果是相似对象,则可以对其成员变量稍作修改。
(2)系统要保存对象的状态,而对象的状态变化很小。
(3)需要避免使用分层次的工厂类来创建分层次的对象,并且类的实例对象只有一个或很少的几个组合状态,通过复制原型对象得到新实例可能比使用构造函数创建一个新实例更加方便。

结构型模式:
结构型模式

1、 适配器模式有以下应用场景:(eg:电源适配器)
·系统需要使用一些现有的类,而这些类的接口(例如方法名)不符合系统的需要,甚至没有这些类的源代码
·想创建一个可以重复使用的类,用于和一些彼此之间没有太大关联的类(包括可能一些在将来引进的类)一起工作

2、 桥接模式有以下应用场景:(eg:毛笔的颜色和大小)
·需要抽象化和具体化之间增加更多的灵活性,避免在两个层次之间建立静态的继承关系;
·抽象部分和实现部分可以用不同的继承方式独立扩展而互不影响
·一个类存在两个或多个独立变化的维度,而且这两个或多个维度都需要独立的扩展;
·不希望使用继承或因为多层继承导致系统类的个数急剧增加的系统

3、 组合模式有以下应用场景:(eg:文件夹中可以包含文件和子文件夹)
·在具有整体和部分的层次结构中希望通过一种方式忽略整体和部分的差异,客户端可以一致的对待他们
·在一个使用面向对象语言开发的系统中需要处理一种树形结构
·在一个系统中能够分离出叶子对象和容器对象,而且他们之间的类型不固定,需要增加一些新的类型

4、 装饰模式有以下应用场景:(eg:新房装修)
·在不影响其他对象的情况下以动态、透明的方式给单个对象添加职责;
·当不能采用继承的方式对系统进行扩展或者采用继承不利于系统扩展和维护时,也可以使用装饰者模式

5、 外观模式有以下应用场景:(eg:自己泡茶和去茶馆喝茶)
(1)当要为访问一系列复杂的子系统提供一个简单人口时可以使用外观模式。
(2)客户端程序与多个子系统之间存在很大的依赖性。引入外观类可以将子系统与客户端解耦,从而提高子系统的独立性和可移植性。
(3)在层次化结构中可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。

6、 享元模式有以下应用场景:(共享一个字符串中的相同的字符)
(1)一个系统有大量相同或者相似的对象,造成内存的大量耗费。
(2)对象的大部分状态都可以外部化,可以将这些外部状态传入对象中。
(3)在使用享元模式时需要维护一个存储享元对象的享元池,而这需要耗费一定的系统资源,因此应当在需要多次重复使用享元对象时才使用享元模式。

7、 代理模式有以下应用场景:
(1)当客户端对象需要访问远程主机中的对象时可以使用远程代理。
(2)当需要用一个消耗资源较少的对象来代表一个消耗资源较多的对象,从而降低系统开销、缩短运行时间时可以使用虚拟代理,例如一个对象需要很长时间才能完成加载时,
(3)当需要为某一个被频繁访问的操作结果提供一个临时存储空间,以供多个客户端共享访问这些结果时可以使用缓冲代理。通过使用缓冲代理,系统无须在客户端每一次访问时都重新执行操作,只需直接从临时缓冲区获取操作结果即可。
(4)当需要控制对一个对象的访问为不同用户提供不同级别的访问权限时可以使用保护代理。
(5)当需要为一个对象的访问(引用)提供一些额外的操作时可以使用智能引用代理。

行为型模式:
行为型模式
行为型模式

1、 职责链模式有以下应用场景:(eg:奖学金审批流程)
(1)有多个对象可以处理同一个请求,具体哪个对象处理该请求待运行时刻再确定,客户端只需将请求提交到链上,而无须关心请求的处理对象是谁以及它是如何处理的。
(2)在不明确指定接收者的情况下向多个对象中的一个提交一个请求。
(3)可动态指定一组对象处理请求,客户端可以动态创建职责链来处理请求,还可以改变链中处理者之间的先后次序。

2、 命令模式有以下应用场景:
(1)系统需要将请求调用者和请求接收者解愈,使得调用者和接收者不直接交互。请求调用者无须知道接收者的存在,也无须知道接收者是谁,接收者也无须关心何时被调用。
(2)系统需要在不同的时间指定请求、将请求排队和执行请求。一个命令对象和请求的初始调用者可以有不同的生命期,换而言之,最初的请求发出者可能已经不在了,而命令对象本身仍然是活动的,可以通过该命令对象去调用请求接收者,并且无须关心请求调用着的存在性,可以通过请求日志文件等机制来具体实现。
(3)系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。
(4)系统需要将一组操作组合在一起形成宏命令。

3、 解释器模式有以下应用场景:
(1) 可以将一个需要解释执行的语言中的句子表示为一棵抽象语法树
(2) 一些重复出现的问题可以用一种简单的语言进行表达
(3) 一个语言的文法较为简单。对于复杂的文法,解释器模式中的文法类层次结构将变得很庞大而无法管理,此时最好使用语法分析程序生成器
(4) 执行效率不是关键问题。高效的解释器通常不是直接解释抽象语法树来实现的,而是需要将他们转换成其他形式,使用解释器模式的执行效率并不高

4、 迭代器模式有以下应用场景:
·访问-个聚合对象的内容而无需暴露它的内部实现。支持对聚合对象的多种遍历。
·为遍历不同的聚合结构提供一个统一的接口。

5、 中介者模式有以下应用场景:(eg:用户和用户发文件通过QQ群,无需一对一发送)
(1) 系统中对象存在复杂的引用关系,系统结构混乱且难以理解
(2) 一个对象由于引用了其他很多对象并且直接和这些对象通信,导致难以复用该对象
(3) 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类,此时可以通过引入中介类来实现,在中介者中定义对象交互的公共行为,如果需要改变行为则可以增加新的具体中介者类

6、 备忘录模式有以下应用场景:
(1) 保存一个对象在某一时刻的全部状态或部分状态,这样以后需要时,他能够恢复到先前的状态,实现撤销操作
(2) 防止外界对象破坏一个对象历史状态的封装性,避免将外界对象历史状态的实现细节暴露给外界对象

7、 观察者模式有以下应用场景:
(1) 一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两个方面封装在独立的对象中使他们可以各自独立的改变和复用
(2) 一个对象的改变将导致一个或多个其他对象也发生改变,而并不知道具体有多少对象将发生改变,也不知道这些对象是谁
(3) 需要在系统中创建一个触发链,A对象的行为将会影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式触发机制

8、 状态模式有以下应用场景:
(1) 对象的行为依赖于他的状态(例如某些属性值),状态的改变将导致行为的变化
(2) 在代码中包含大量与对象状态有关的条件语句,这些条件语句的出现会导致代码的可维护性和灵活性变差,不能方便的增加和删除状态,并且导致客户类和类库之间的耦合增强

9、 策略模式有以下应用场景:
·当很多相关类只在它们的行为的实现上不一样时,策略模式提供了—个很好的方式来配置某个类,让其具有上述多种实现之一。
·当我们需要同一个行为的不同实现(变体)的时候,策略模式可以用作实现这些变体。
·算法需要用到一些数据,而这些数据不应该被客户知道,这时我们可以通过策略模式隐藏复杂的算法和数据接口。
·一个类定义了很多行为,这些行为作为一个switch选择语句的分支执行部分,这时策略模式可以消除这些分支选择。

10、 模板方法模式(eg:请客吃饭流程)
(1) 对一些复杂的算法进行分割,将其算法中固定不变的部分设计为模板方法和父类具体方法,而一些可以改变的细节由其子类来实现。即一次性实现一个算法的不变部分,并将可变的行为留给子类来实现
(2) 各子类中公共行为应被提取出来并集中到一个公共父类中避免代码重复
(3) 需要通过子类来决定父类算法中的某个步骤是否执行,实现子类对父类的反向控制

11、访问者模式(eg:医院不同工作人员对处方单的处理)
(1)一个对象结构包含多个类型的对象,希望对这些对象实施一些依赖其具体类型的操作。在访问者中针对每一种具体的类型都提供了一个访问操作,不同类型的对象可以有不同的访问操作。
(2)需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类。访问者模式使得用户可以将相关的访问操作集中起来定义在访问者类中,对象结构可以被多个不同的访问者类所使用,将对象本身与对象的访问操作分离。
(3)对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。

几种常见设计模式的比较(南大研一期末考题)
1、比较策略模式和状态模式
策略模式是定义一个算法家族,把他们封装起来,使得他们之间可以相互替换,状态模式是将一个个状态封装成一个个类,当内部状态发生改变时,改变他们的行为。策略模式和状态模式的类图几乎一样,策略模式中,客户端知道具体的策略有哪些,客户端能够通过setStrategy方法来动态的设置具体使用哪个策略,状态模式中,客户端不知道内部状态是怎么变化的,状态模式通过状态转移来组
合State对象,最后把行为呈现出来。

2、比较策略模式和模板方法模式
策略模式和模版方法模式的共同点是都封装算法。
策略模式是定义算法家族,让他们之间可以相互替换,模版方法是针对一个算法流程,某个步骤的具体细节交给子类去实现。策略模式可以改变算法流程,使一个个步骤可以相互替换,模版方法模式算法流程是固定的。
策略模式使用组合来实现,模版方法模式使用继承来实现

3、比较适配器模式、外观模式、装饰者模式的意图
适配器模式是把一个类的接口转换成客户期望的接口,让原本接口不兼容的类兼容,适配器模式一般用于想要复用某个类的场景;
外观模式是封装子系统,提供简单的子系统的入口,同时简化层间调用;装饰者模式是动态的给被装饰者添加职责,主要目的是扩展功能。
对于装饰者和外观,他们都属于包装模式,装饰者需要满足is-a关系,不管如何包装,都有共同的父类,而适配器主要解决兼容问题,不一定要统一父类。

4、比较模板方法模式和工厂模式
工厂模式是模版方法的特殊实现,工厂里面的创建对象,就相当于只有一个步骤的模版方法模式,这个步骤交给子类去实现。

5、比较装饰者模式和代理模式
装饰者模式是动态的给组件对象添加“职责”,更多的考虑功能的扩展,而代理模式控制对象的访问,也能做方法的增强。
装饰者模式中,客户端可以看到具体的装饰有哪些,而代理模式把对象的具体信息给隐藏了起来。
装饰者模式是把原始组件对象传入构造器中,代理模式是创建一个对象的实例

6、适配器和代理的比较:
代理和适配器都是挡在其他对象的前面,并负责将请求转发给它们。适配器会改变对象适配的接口,而代理则实现相同的接口。
有一个额外相似性牵涉到保护代理,保护代理可以根据客户的角色来决定是否允许客户访问特定的方法。所以保护代理可能只提供给客户部分接口,这就和某些适配器很相像了。

7、类模式和对象模式比较:
类模式描述类之间的关系如何通过继承定义。类模式的关系是在编译时建立的。
对象模式描述对象之间的关系,而且主要是利用组合定义。对象模式的关系通常在运行时建立,而且更加动态、更有弹性

8、代理的类型:
远程代理:调用代理的方法,会被代理利用网络转发到远程执行,并且结果会通过网络返回给代理,再由代理将结果转给客户(调用远程主机的对象)
虚拟代理:当对象在创建前和创建中,由虚拟代理来扮演对像的替身,对象创建后,代理就会将请求直接委托给对象。
防火墙代理:控制网络资源的访问,保护对象不被恶意攻击
智能引用代理:当一个对象被引用时,代理提供额外的功能,例如计算对一个对象的引用的计数
缓存代理:会维护之前创建的对象,当收到请求是时,在可能的情况下返回缓存对象。
同步代理:多线程时,保护对象的安全访问
复杂隐藏代理:隐藏并控制复杂的对象的访问。和外观模式有点像,但是有区别,这个代理是控制了访问,外观只是提供一种可替代的接口

9、Hook定义的用途
钩子是一种方法,它在抽象类中不做事,或者只做默认的事,子类可以选择要不要去覆盖它

10、什么是设计模式?什么是设计模式类目?
设计模式是在某种情境下,针对某问题的某种解决方案;
情境:是应用某个模式的情况,这应该是不断出现的情况
问题:是你想在某情境下达到的目标,但是也可以是某情境下的约束
解决方案:是你所追求的,一个通用的设计,用来解决约束,达到目标
设计模式类目:模式类目都包含一组模式,描述模式之间关系上的细节,每一个模式的描述方式都遵循一个模板,并阐述该模式的许多细节,如模式的名称,意图,动机,适用性。在四人组的类目中,包含了23个基础的设计模式。

11、(设计模式分类),模式分类是将模式分组到类目的结果,可以分为创建型,行为型,结构型;也可以分为类模式和对象模式
创建型模式设计到将对象实例化,这类模式都提供了一个方法,将客户从需要实例化的对象中解耦
行为型模式都设计到类和对象如何交互及分配职责
结构型模式可以让你把类或者对象组合到更大的结构中
类模式描述类之间的关系如何通过继承定义;类模式的关系是在编译时建立的
对象模式描述对象之间的关系,而且主要是利用组合定义。对象模式的关系通常在运行时建立,而且更加动态,更有弹性

12、为什么装饰者模式被归类到结构类目中?
结构型模式是用来描述类和对象如何被组合以建立新的结构或功能。装饰者模式允许你通过“将某对象包装进另一个对象的方式”,来组合对象以提供新的功能。所以焦点是在如何动态地组合对象以获取功能,而不是行为型模式的目的—对象之间的沟通和互连。

13、观察者模式中的update方法是否必须?请说明理由。
必须;如果观察者中没有update方法,那么在被观察对象发生变化的时候,怎么将变化的状态,或者参数通知到观察者。无论是push模式还是pull模式,被观察对象的变化的状态的更新是一定要通知到观察者的,所以没有update方法不行

14、比较透明组合和安全组合。
透明组合模式中,抽象构件Component中声明了所有用于管理成员对象的方法,包括add()、remove()以及getChild()等方法,这样做的好处是确保所有的构件类都有相同的接口。在客户端看来,叶子对象与容器对象所提供的方法是一致的,客户端可以相同地对待所有的对象。透明组合模式也是组合模式的标准形式
透明组合模式的缺点是不够安全,因为叶子对象和容器对象在本质是有区别的。叶子对象不可能有下一个层次的对象,即不可能包含成员对象,因此为其提供add,remove,getChild等方法是没有意义的,这在编译阶段不会出错,但在运行阶段如果调用这些方法可能会出错。(如果没有提供相应的错误处理代码)。

安全组合模式中,在抽象构件Component中没有声明任何用于管理成员对象的方法,而是在Composite类中声明并实现这些方法。这种做法是安全的,因为根本不向叶子对象提供这些管理成员对象的方法,对于叶子对象,客户端不可能调用到这些方法。
安全组合模式的缺点是不够透明,因此客户端不能完全针对抽象编程,必须有区别地对待叶子构件和容器构件。在实际应用中,安全组合模式的使用频率也非常高,在Java AWT中使用的组合模式就是安全组合模式。

OS操作系统

  1. pv的含义(初试题):结合信号量和进程转换作答
  2. 程序局部性原理:时间局部性和空间局部性
  3. 死锁
  4. 进程三态模型的图,判断是否正确并解释
  5. 进程五状态
  6. 程序控制块有哪些内容PCB
    进程标识符 name:进程当前状态 status:进程相应的程序和数据地址;进程资源清单;进程优先级 priority:
  7. 多道程序设计的前提:中断
  8. 虚拟内存如何实现
    通过部分装入、请求调入、置换功能从逻辑上扩充内存容量的内存称为虚拟内存
  9. 碎片
    内部碎片:已经分配给作业但未被利用的内存空间
    外部碎片:系统中还没有分配给作业,但由于碎片化太小而无法分配给进程存储块

10、linux系统和windows系统区别(华师大复试)
一、内核不同,Linux操作系统使用Linux内核,Windows操作系统使用NT内核;
Linux内核代码开源,NT内核代码闭源,也就是说任何人都可以拿着Linux内核代码改成自己喜欢的风格来用,不过前提是你得是技术大牛。
二、Linux是免费的,Windows是收费的,不过不代表所有Linux都是免费的,有一部分进行商业运作的Linux是收费的,比如Redhat Linux。
三、Windows软件支持丰富,而Linux软件支持就很少了,因为Windows硬件驱动厂商支持全面,Linux驱动这块不如Windows全面,比如百分之九十九的游戏都可以在Windows上运行,而Linux上只有很简陋的游戏。
四、Windows易用性高,Linux操作系统有一定的门槛,Linux使用命令行字符模式为主要操作方式,
Windows使用窗口、图标、鼠标点击形象化的方式为主要操作方式,如果不懂命令行,基本使用Linux是寸步难行的。
五、市场和安全性,Linux市场主攻服务器市场,Windows系统主打桌面市场,Linux主要应用于网络,而Windows操作系统最开始应用于打印服务。Linux安全性比Windows安全性高,要求它更加可靠。

11、电脑开机的全过程(华师大复试)
计算机的整个启动过程分成四个阶段。
一、第一阶段:BIOS
1、 硬件自检
2、 启动顺序 硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。
二、第二阶段:主引导记录
BIOS按照"启动顺序",把控制权转交给排在第一位的储存设备。
主引导记录的主要作用是,告诉计算机到硬盘的哪一个位置去找操作系统。
三、第三阶段:硬盘启动
计算机的控制权就要转交给硬盘的某个分区了,这里又分成三种情况。
1、 情况A:卷引导记录 告诉计算机,操作系统在这个分区里的位置。然后,计算机就会加载操作系统了。
2、 情况B:扩展分区和逻辑分区
3、 情况C:启动管理器 计算机运行事先安装的"启动管理器"(boot loader),由用户选择启动哪一个操作系统。
四、第四阶段:操作系统
控制权转交给操作系统后,操作系统的内核首先被载入内存。
以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。至此,全部启动过程完成。

cpp:

  1. 代码执行结果
  2. 什么是多态

数据库:
4. b树索引
5. 数据库锁的机制
6. 笛卡尔乘积
7. mysql聚簇索引,多选题
8. union和union all区别:两表连接时,返回结果union all不去重,union去重之后
9. 索引无法生效的几种情况:
聚合函数;隐式类型转换;不符合最左前缀匹配原则;走索引代价比较高;
10. 选出4个选项里不是数据库存储引擎的选项:InnoDB、MyISAM、Memory、
11. 各种join辨别:inner join;left join;right join;outer join
12. 事务隔离级别:读未提交(脏读);读已提交(解决脏读,有不可重复读问题);可重复读(解决重复读问题,有幻读问题);可串行化(解决幻读问题)
13. 大量URL需要保存,之后需要实现精确查找,问使用以下哪个索引更合适,并解释原因:A. B树 B. 哈希 C. 位图 D. 倒排
其他:
14. 简述迪杰斯特拉
15. FTP:文本传输协议,运行在TCP之上,用于在异构网络中任意计算机之间传送文件
NAT:网络地址转换,实现专用网络地址和公用网络地址之间的相互转化

16. IAAS, PAAS, SAAS的含义,三种云服务模型
SaaS:软件即服务,(也称为云应用程序服务)代表了云市场中企业最常用的选项。 SaaS利用互联网向其用户提供应用程序,这些应用程序由第三方供应商管理。 大多数SaaS应用程序直接通过Web浏览器运行,不需要在客户端进行任何下载或安装。
PaaS:平台即服务
云平台服务或平台即服务(PaaS)为某些软件提供云组件,这些组件主要用于应用程序。 PaaS为开发人员提供了一个框架,使他们可以基于它创建自定义应用程序。所有服务器,存储和网络都可以由企业或第三方提供商进行管理,而开发人员可以负责应用程序的管理。
IaaS:基础架构即服务
云基础架构服务称为基础架构即服务(IaaS),由高度可扩展和自动化的计算资源组成。 IaaS是完全自助服务,用于访问和监控计算、网络,存储和其他服务等内容,它允许企业按需求和需要购买资源,而不必购买全部硬件。

17. 微信朋友圈为什么不能编辑
(为什么微信朋友圈不能编辑,而QQ空间可编辑,选择题:技术原因、需求原因。。。)
技术:该功能可以实现,但是如果每次刷新对以往的内容全部检测,会增加服务器同步的压力,坏的情况下导致系统崩溃
需求:朋友圈的编辑功能,只有很少的人用,这些小需求的不断添加最终导致的结果只有一个,就是微信变得越来越重,沦为下一个qq。
最后一方面,删除朋友圈的消息对于用户来说,并没有很重大的损失。删除并重新发表这个简单的过程一样可以达到编辑原来消息的目的。 综上,对于一个有悖于真实场景的功能微信不会添加,也不该添加。对于非常小众的需求,在可以曲线达到目的的情况下,也不需要添加。

补充:
1、 机器学习:顾名思义, 机器学习是研究如何使用机器来模拟人类学习活动的一门学科。稍为严格的提法是:机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问。
2、 人工智能是指机器执行智能任务的能力,而机器学习是用机器学习算法来建立模型,当有新的数据过来时,可以通过模型来进行预测。没有机器学习,人工智能无法实现。
3、文件系统:操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
4、os\pv
5、过程测试

  1. 测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议。
  2. 测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制定。风险评估与规避措施有一个制定。
  3. 测试设计阶段:主要是编写测试用例,会参考需求文档(原型图),概要设计,详细设计等文档,用例编写完成之后会进行评审。
  4. 测试执行阶段:搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理直到测试结束。
  5. 测试评估阶段:出测试报告,确认是否可以上线。
    6、互斥
    7、测试题:黑盒白盒测试解释;单元测试、集成测试、系统测试
    ·单元测试:对程序单元进行正确性检验的测试工作
    ·集成测试:通过大爆炸式地集成策略或者增量式的继承策略来对系统的接口进行正确性检验的测试工作
    ·系统测试:发生在集成测试之后,关注整个系统的行为,对整个系统进行缺陷的测试工作
    8、C++ 程序题是说结果那种(复习c++语法,网上找了一些程序题目练习)
    9、代码题:遇到一个问对不对,后面几个问怎么改
    10、抽到代码题了,想个设计模式改造一下
    11、代码怎么实现
    12、代码不能编译的情况?
    父类只有有参构造,而子类没有显示的调用父类的有参构造或者调用父类的无参构造都会无法编译
    13、简述迪杰斯特拉
    14、我说了一堆dp 老师问我应用 我说做题目 老师随手来了一道dp题 我搁哪扯dp思路
    15、问我对这个专业的理解

项目:
1、不说功能,说怎么实现的?
2、通信协议 技术;底层技术原理
3、什么方面的项目 什么重合。。
4、react,js,我就说了后期用跨平台 react native
5、vdom这个用了框架(vue)的都得准备准备 反正是前端的东西 vue nginx
6、前端三大框架 虚拟dom是什么
7、项目问我压力测试能够负载多少
8、多说准备好的技术
9、他让我说我设计过的最满意的一个方法。
10、说没有项目,问我学过什么之类的(ds os)
11、项目的话 会被问是否上线?多少用户、多少并发
12、从压力测试 一路问到了 小程序websocket 我说了nignx 就问我压力测试啥的
13、最好说自己独立完成的项目
14、问我如何处理高并发
15、问你用什么算法实现?
16、问我用了哪些软件工程的方法
17、项目中遇到的问题,以及如何解决的
18、做的最失败的项目和做的最成功的项目分别是什么,你觉得失败和成功的原因是什么

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值