沃尔沃.NET开发实习岗面试经验

#我的求职经验分享#

实习岗位,岗位是.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操作,同时也拥有强大的社区支持。选择使用哪个框架取决于你的具体需求和个人偏好。

#我的求职经验分享#
全部评论
特斯拉?😭
点赞 回复 分享
发布于 2023-06-06 21:50 上海
感觉像BMW呢
点赞 回复 分享
发布于 2023-06-01 13:47 江苏
楼主拿到offer了吗
点赞 回复 分享
发布于 2023-05-31 21:06 江苏
这家外企是哪个行业的啊?
点赞 回复 分享
发布于 2023-05-31 20:33 吉林

相关推荐

会飞的猿:我看你想进大厂,我给你总结一下学习路线吧,java语言方面常规八股要熟,那些java的集合,重点背hashmap八股吧,jvm类加载机制,运行时分区,垃圾回收算法,垃圾回收器CMS、G1这些,各种乐观锁悲观锁,线程安全,threadlocal这些。在进阶一些的比如jvm参数,内存溢出泄漏排查,jvm调优。我这里说的只是冰山一角,详细八股可以去网上找,这不用去买,都免费资源。mysql、redis可以去看小林coding,我看你简历上写了,你一定要熟,什么底层b+树、索引结构、innodb、mvcc、undo log、redo log、行级锁表级锁,这些东西高频出现,如果面试官问我这些我都能笑出来。消息队列rabbitmq也好kafka也好,学一种就行,什么分区啊副本啊确认机制啊怎么保证不重复消费、怎么保证消息不丢失这些基本的一定要会,进阶一点的比如LEO、高水位线、kafka和rocketmq底层零拷贝的区别等等。计算机网络和操作系统既然你是科班应该理解起来问题不大,去看小林coding这两块吧,深度够了。spring boot的八股好好看看吧,一般字节腾讯不这么问,其他的java大厂挺爱问的,什么循环依赖啥的去网上看看。数据结构的话科班应该问题不大,多去力扣集中突击刷题吧。项目的话其实说白了还是结合八股来,想一想你写的这些技术会给你挖什么坑。除此之外,还有场景题、rpc、设计模式、linux命令、ddd等。不会的就别往简历上写了,虽然技术栈很多的话好看些,但背起来确实累。总结一下,多去实习吧,多跳槽,直到跳到一个不错的中厂做跳板,这是一条可行的进大厂的路线。另外,只想找个小厂的工作的话,没必要全都照这些准备,太累了,重点放在框架的使用和一些基础八股吧。大致路线就这样,没啥太多难度,就是量大,你能达到什么高度取决于你对自己多狠,祝好。
点赞 评论 收藏
分享
无一技之长怎么办:别去右边,售前,实施,需求分析一起,这是把人当牛马用啊,快跑,这些岗位天花板很低的
点赞 评论 收藏
分享
评论
10
32
分享

创作者周榜

更多
牛客网
牛客企业服务