当前位置: 首页 > 面试经验 >

某外企面试经验

优质
小牛编辑
95浏览
2023-05-31

某外企面试经验

#我的求职经验分享#

公司名字不方便透露,岗位是.net开发,没有笔试直接去面试,大约面了一个半小时,其中一半时间是用英语面试。基本上问的都是都是技术问题,没有什么废话。

首先问了我对.net和c#有什么了解,还有visual studio用的什么版本。还有问了和依赖注入有关的问题。还有问我用过什么数据库,说一下MySQL和SQL Server的区别。还有问了一些项目上问题,还有里式替换和solid原则,还有restful api,还有给了我一个英文的需求文档,让我说一下用户的具体需求。还有问了git,讲一下spring boot的框架,说一下mybatis和mybatis plus的区别。还有问我什么是测试驱动开发怎么理解。最后问了一下能否接受转技术栈(我学的是Java),因为平时开会和文档都是英文,能否静下心来学习英语。接下来是我的一些复盘总结:

里氏替换原则:

通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。

优点:

1、代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。

2、提高代码的重用性;

3、子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞”是说子拥有父的“种”,

4、“世界上没有两片完全相同的叶子”是指明子与父的不同;

5、提高代码的可扩展性,实现父类的方法就可以“为所欲为”了,君不见很多开源框架的扩展接口他都是通过继承父类来完成的;

6、提高产品或项目的开放性

SOLID原则介绍:

单一功能原则,开闭原则,里氏替换原则,依赖倒置原则,接口分离原则。

设计模式七大原则介绍:

单一职责原则(Single responsibility principle)

即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1、A2。

单一职责原则注意事项和细节

  1. 降低类的复杂度,一个类只负责一项职责。
  2. 提高类的可读性,可维护性
  3. 降低变更引起的风险
  4. 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则

接口隔离原则(Interface Segregation Principle)

即客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。

依赖倒转原则(Dependence Inversion Principle)

依赖倒转(倒置)的中心思想是面向接口编程,所谓“倒转”是指抽象不应该依赖细节,而是细节应该依赖抽象。也就是高层模块不应该依赖低层模块,二者都应该依赖其抽象。因为相对于细节的多变性,抽象的东西要稳定的多。比如有个Person类,可以接受Email、QQ和微信的消息。如果都为其提供一个专门的方法,就会让代码非常的冗余,可以引入一个IReceiver接口,让Person类依赖该接口。这样QQ、微信和Email各自实现IReceiver里面的方法即可.

里氏替换原则(Liskov Substitution Principle)见上

开闭原则(Open Closed Principle)

一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。也就是当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。用抽象构建框架,用实现扩展细节。

开闭原则是编程中最基础、最重要的设计原则。编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则.

迪米特法则(Demeter Principle)

又叫最少知道原则,即一个类对自己依赖的类知道的越少越好,核心是降低类之间的耦合。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public 方法,不对外泄露任何信息。避免与非直接朋友的耦合,只与直接的朋友通信,所谓的直接朋友是出现成员变量,方法参数,方法返回值中的类。而出现在局部变量中的类不是直接的朋友。也就是说,陌生的类最好不要以局部变量的形式出现在类的内部。

合成复用原则(Composite Reuse Principle)

就是是尽量使用合成/聚合的方式,而不是使用继承。

spring的依赖注入:

http://t.csdn.cn/TNiBq这篇博客写的很好可以参考.

mysql/sqlServer/Oracle的区别:

MySQL:瑞典MYSQLAB推出,关系型数据库,开源免费,适用于WEB网站、日志管理、数据仓库和嵌入式系统等小型系统。

SQLServer:微软Microsoft推出,关系型数据库,可视化、安全性与稳定性较好,适用于企业级海量数据存储查询。

Oracle:美国甲骨文公司推出,关系型数据库,跨平台,安全稳定,结构复杂,对管理员要求高,常用于金融、电信领域。

MyBatis和MyBatis Plus区别:

MyBatis和MyBatis Plus是两个Java持久化框架,它们都基于MyBatis的核心思想和功能,但在一些方面有所不同。

  1. 配置方式:MyBatis使用XML或注解来进行配置,而MyBatis Plus提供了更简洁的基于注解的配置方式。MyBatis Plus通过自动生成代码的方式,减少了手动编写重复的CRUD操作的工作量。
  2. 功能增强:MyBatis Plus在MyBatis的基础上进行了功能增强。它提供了一些便捷的方法和工具,如通用Mapper、分页插件、代码生成器等,可以简化开发过程。MyBatis Plus还支持多种数据库的操作,包括MySQL、Oracle、SQL Server等。
  3. CRUD操作:MyBatis Plus简化了CRUD操作的编写。它提供了通用的Mapper接口和封装好的方法,可以直接进行增删改查操作,无需手动编写SQL语句。同时,MyBatis Plus支持Lambda表达式的方式进行条件构造,使得查询条件更加灵活和易于维护。
  4. 社区支持:MyBatis是一个非常受欢迎的Java持久化框架,有着庞大的社区支持和活跃的开发者群体。MyBatis Plus则是在MyBatis的基础上发展而来,继承了MyBatis的优点,并吸引了越来越多的开发者参与其中,形成了自己的社区和生态系统。

总的来说,MyBatis Plus是在MyBatis的基础上进行了功能增强和开发便利性的提升。它提供了更简洁的配置方式和便捷的CRUD操作,同时也拥有强大的社区支持。选择使用哪个框架取决于你的具体需求和个人偏好。

#我的求职经验分享#
 类似资料: