校招又临近了,怎么在面试中应对设计模式相关问题呢?

news2024/11/17 9:35:06

在这里插入图片描述

夏天开始了,那么夏天结束时的毕业季也不远了。毕业是个伤感、期待而又略带残酷的时节,就像蜜桃无论成熟与否都会在这个时间被采摘,如果毫无准备就踏入社会,就会……马上变成低级社畜。所以说还是要早点为了毕业找工作做点准备,不然等到毕业时间到来,就真的只剩心慌慌,不知道该怎么办了

01 | 准备

校招其实是对毕业生各方面的综合考量,其中包括基础知识、个人思维能力、临场反应能力等等。其中最重要的一点是实力才是硬道理,基础硬实力不过关,看再多“攻略”也无济于事,所以在前期准备阶段,首先要明确的一点就是夯实基础,然后才是针对性的扩展,最后就是调整好自己的心态,从容的面对每一场笔试面试

夯实基础

正所谓”万丈高楼平地起,一砖一瓦皆根基“,既然面试会问到设计模式,那么设计模式的基础(C++知识,操作系统)等也一定会同时出现,所以在学习设计模式之前,一定要先把基础给打好

  • C++基础:结合自己学习的过程以及群里老师的建议,总结如下学习/复习C++知识的方法

    1. 《C++ Primer 5》:入门经典之作,时间充裕的话可以过一遍,或者挑重点看(比如泛型百年城、继承于堕胎、模板与函数重载、C++11特性等)

    2. 《STL源码剖析》:面试C++岗位必问的内容,也是最近在群里老师提及并且自己也正打算看的内容,大概看了以下目录结构,对标设计模式的话就重点关注虚函数、多继承、虚继承的对象模式。看书觉得太烦躁的可以跟着小破站侯捷老师的课进行学习

  • 操作系统原理:设计模式中常遇到进程、线程、资源等相关问题,所以操作系统原理还是比较重要的

    1. 《UNIX环境高级编程》:系统编程的必读书籍,最近学习设计模式的时候也同时在看这本书中进程相关的知识模块,两者结合起来一起学习,效率更高

知识扩展

基础打好之后,也就保证了知识的基础深度,但是还欠缺知识的广度,也就是地基打好了,要开始盖楼了,比如现在要学的设计模式、之前学过的计算机网络编程等

  1. 设计模式:直接跟着老师的专栏《C++设计模式》进行学习,最好每一个类别的设计模式都自己动手执行一遍,照猫画虎也起码能跟着学到怎么画,纸上谈兵只会做无用功
    1. 《大话设计模式》:大话系列书籍,阅读起来还是很不错的,通俗易懂

  2. 计算机网络原理:我偏向于想做网络服务器方向的,所以就找书学了以下这块内容
    1. 《TCP/IP 详解 卷1》:深入理解TCP/IP协议栈的机制以其实现过程
    2. 《UNIX网络编程》:网络编程领域经典之作
    3. 《图解HTTP/图解TCP/IP》:图形化的方式描述协议栈的知识,通俗易懂

心态调整

心态也是面对各种问题的十分重要的一环,就像以前中学考试,小考十拿九稳,大考一上就慌,保持一个良好的心态,才能发挥自己本身的实力,甚至超常发挥。当然,这个阶段也要不断的夯实基础,可以多刷题,锻炼自己的解题能力,保证自己高度专注的精神力

在这里插入图片描述

02 | 热门

设计模式那么多!面试官会怎么问?_冯Jungle的博客-CSDN博客

参考上面老师的文章,以及问了一下面试过的朋友,整理了一下面试中可能会问到的与设计模式相关的问题以及解答

设计模式的种类?

设计模式分为三大类:创建型模式、结构型模式、行为型模式

  1. 创建型有种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式;

  2. 结构型有种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式;

  3. 行为型有十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式;

23种类型我目前也只学习了创建型模式,其他模式还没怎么看,所以到时候应该挑重点说,比如我得话就直接说”这23种类型中,我目前学习过的只有创建型模式,其他两类暂时还没有开始学习“,这样子就把面试官的重点扯到自己比较熟悉的模块上了

讲一下单例模式

单例模式是属于创建型模式中的应用十分广泛的一种,它的设计目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享,简单来说就是在整个软件运行的生命周期里,单例模式保证一个类只能产生一个实例,确保该类的唯一实例性

  1. 单例模式的设计理念是什么?

主要为了解决一个全局使用的类被频繁的创建和销毁,浪费系统资源,防止多线程环境中资源使用异常导致系统信息错乱、崩溃的情况

  1. 构造函数等为什么设计为私有?除了私有还有没有其他实现方法?

    1. 为了禁止外部构造和析构,禁止外部拷贝和赋值,确保实例的唯一性。所以将构造函数和析构函数以及拷贝构造和赋值构造函数设置为private类型

    2. 第二个问题只找到了这样一句话:”标准的单例模式,构造函数是需要私有化的,但是单例模式是一种思想,代码模式设计的目的是为了服务于业务的,可能某些特俗场景下,需要外界使用构造函数“

  2. 单例对象为什么设计为static,什么时候初始化,什么时候销毁?

    1. 为什么是static?

      1. 通过静态的类方法(getInstance) 获取instance,该方法是静态方法,instance由该方法返回(被该方法使用),如果instance非静态,无法被getInstance调用;
      2. instance需要在调用getInstance时候被初始化,只有static的成员才能在没有创建对象时进行初始化。且类的静态成员在类第一次被使用时初始化后就不会再被初始化,保证了单例;
      3. static类型的instance存在静态存储区,每次调用时,都指向的同一个对象
    2. 什么时候初始化?
      初始化的情况分两种,对应单例模式中的懒汉式、饿汉式

      1. 懒汉式:在需要使用时再初始化
      2. 饿汉式:程序开始时就初始化
    3. 什么时候销毁?
      我的理解是:单例模式全局只有一个实例,反复个体Instance不会增加内存,不会造成内存溢出,程序退出时内存会被系统释放

  3. 懒汉模式和饿汉模式的实现,以及c++11后懒汉模式的实现
    参考前面的笔记什么是单例模式?

  4. 加锁式懒汉模式中的”双检锁“为什么两次判空?

    1. 第一次判空:验证是否创建对象,判断为了避免不必要的同步
    2. 第二次判空:避免重复创建单例,因为可能会存在多个线程通过了第一次判断在等待锁,来创建新的实例对象

抽象工厂和工厂方法的区别

工厂方法模式是定义了一个创建对象的抽象方法,由子类决定要实例化的类。这样做的好处是再有新的类型的对象需要实例化只要增加子类即可。抽象工厂模式定义了一个接口用于创建对象族,而无需明确指定具体类。抽象工厂也是把对象的实例化交给了子类,即支持拓展。同时提供给客户端接口,避免了用户直接操作子类工厂。

享元模式

待学习后补充

观察者模式

待学习后补充

STL有了解嘛?具体讲一下

待整理

智能指针中的shared_ptr,手写shared_ptr

待整理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stereo-Detection:YOLO v5与双目测距结合,实现目标的识别和定位测距

简介:Stereo-Detection 是一个传统的SGBM深度测距yolov5目标检测,并部署在Jeston nano的开源教程。它致力于让更多的大四学生毕业,以及让研一学生入门 开源链接:yzfzzz/Stereo-Detection: Conventional SGBM depth ranging yolov…

【android专题】学习android,第一天学习:软件和组件了解

开发软件和手机建立连接 1.建立连接 2.运行App程序到手机,通过USB线 选择你的小米设备 run按钮 下面这个,就是你设备的日志 通过USB安装时,报错,大概意思就是,默认手机是禁止通过usb安装软件的, 要打开…

Automa自动化爬取图片(二)

Automa插件可以扩展Automa的功能,使其可以与其他应用程序进行交互。例如,Automa插件可以用于自动化测试Web应用程序,批量发送邮件,自动化填写表单等。通过Automa插件,我们可以更加灵活地定制自己的自动化测试工具&…

Linux 配置YUM源(FTP方式获取软件源、使用阿里云yum源、同时使用本地源与在线源)YUM获取安装包并生成YUM软件仓库

YUM介绍 YUM(yellow dog updater modified) 基于RPM包构建的软件更新机制 自动解决依赖关系 yum软件仓库集中管理软件包 RPM软件包的来源 centos发布的RPM包集合第三方组织发布的RPM包集合用户自定义的RPM包集合 软件仓库的提供方式 FTP服务:…

阿里4年测试经验分享 —— 测试外包干了3年后,我废了...

去年国庆,我分享了一次一位阿里朋友的技术生涯,大家反响爆蓬,感觉十分有意思,今天我来分享一下我另一位朋友的真实经历,是不是很想听? 没错,我这位朋友是曾经外包公司的测试开发,而…

SAPJNet:小样本多序列MRI诊断的序列自适应原型联合网络

文章目录 SAPJNet: Sequence-Adaptive Prototype-Joint Network for Small Sample Multi-sequence MRI Diagnosis摘要方法Sequence-Adaptive Transformer原型优化策略 实验结果 SAPJNet: Sequence-Adaptive Prototype-Joint Network for Small Sample Multi-sequence MRI Diagn…

【2023-4-8 美团春招笔试题 开发岗(技术综合-后端数开软开)】

题目一&#xff1a; 代码一&#xff1a; #include <iostream> #include <string> using namespace std;int main() {int n,m,a;cin>>n>>m>>a;string s[n][m];for(int i0;i<n;i){for(int j0;j<m;j){cin>>s[i][j];}}int count0;for(i…

【MySQL】(7)复合查询

文章目录 单表查询回顾与练习多表查询自连接多行子查询&#xff08;单列&#xff09;in 运算符all 关键字any 关键字 多列子查询from 子句中的子查询合并查询 单表查询回顾与练习 注&#xff1a;下面的依旧基于 scott 数据库 MariaDB [scott]> select * from emp; -------…

【历史上的今天】4 月 23 日:YouTube 上传第一个视频;数字音频播放器的发明者出生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 4 月 23 日&#xff0c;世界读书日。在 1564 年的这一天&#xff0c;全世界最卓越的文学家之一莎士比亚出生&#xff1b;1616 年的这一天&#xff0c;莎士比亚…

ubuntu22.04普通用户配置cuda

ubuntu22.04普通用户配置cuda 1. 问题描述2. 解决方法2.1 查看安装cuda版本2.2 修改普通用户自己的环境变量2.3 重新执行初始化文档2.4 查看nvcc版本&#xff0c;测试是否成功 1. 问题描述 在ubuntu22.04服务器上使用root用户安装了cuda&#xff0c;普通用户登录时仍然没办法直…

中国社科院与美国杜兰大学金融管理硕士项目——你永远可以,成为想要的自己

有人说过&#xff0c;世界上最好的保鲜就是不断进步&#xff0c;每一次改变都是新生的开始&#xff0c;让自己成为更好的更值得爱的人。你要相信&#xff0c;不论任何时候&#xff0c;你都可以成为想要的自己。就像我们在职攻读硕士学位&#xff0c;经过在社科院与杜兰大学金融…

聚观早报|周鸿祎360员工不会被GPT淘汰;蚂蚁集团再捐1亿种树治沙

今日要闻&#xff1a;周鸿祎称360员工不会被GPT淘汰&#xff1b;特斯拉ModelS/X美国售价全系上涨&#xff1b;蚂蚁集团再捐1亿支持种树治沙&#xff1b;复旦大学MOSS大模型正式开源&#xff1b;电影《灌篮高手》票房突破2亿元 周鸿祎称360员工不会被GPT淘汰 4 月 21 日下午&am…

链表中的递归算法C语言带你看看

25. K 个一组翻转链表 难度困难1998收藏分享切换为英文接收动态反馈 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么…

Redis实现分布式锁的正确姿势 | Spring Cloud 36

一、分布式锁 1.1 什么是分布式锁 分布式锁&#xff0c;即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题&#xff0c;而分布式锁&#xff0c;就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&#xff0c;分布式系统中竞争共享…

【网络安全】SSRF漏洞

ssfr ssrf产生的原因原理展示使用不当可能出现ssrf漏洞函数漏洞检测(靶场一)代码curl是什么检测服务器是否可以从其他服务器获取数据使用file协议获取远端服务器的内容利用dict协议探测端口 漏洞检测&#xff08;靶场二&#xff09;代码file_get_contents()利用file协议读取服务…

过来人(江苏)专转本考试后的感悟和经验,真的很受用

过来人转本考试后的感悟和经验&#xff0c;真的很受用&#xff01; 转本不仅是分数的较量&#xff0c;也是信息收集、时间管理、学习能力、毅力等等的较量。 同学们在转本中难免会遇见一些困难&#xff0c;为了避免走弯路&#xff0c;一起来看看过来人的感悟和经验吧&#xf…

Android音频使用webrtc降噪处理、回声消除

Android音频使用webrtc降噪处理、回声消除 介绍音频处理在Android应用中的重要性和应用场景 音频处理在Android应用中扮演着重要的角色&#xff0c;它能够改善用户体验&#xff0c;提升应用的功能性和吸引力。下面将介绍音频处理在Android应用中的广泛应用以及音频处理对用户体…

深度学习--基础(一)pytorch安装--cpu

在线安装 无GPU的时候&#xff0c;只能安装CPU版本&#xff0c;打开官网 https://pytorch.org/ 直接Pip安装即可 国内访问这些下载安装会出现超时的情况&#xff0c;可以-i指定国内安装源&#xff1a; pip3.11 install torch torchvision torchaudio -i https://pypi.tuna.ts…

【架构】微前端

文章目录 概述优劣优点缺点 微前端的整体架构微前端部署平台微前端运行时基于 SPA 的微前端架构 应用生命周期 方案qiankun 主应用qiankun微应用Vue 2 微应用 来源 概述 微前端不是单纯的前端框架或者工具&#xff0c;而是一套架构体系&#xff0c;这个概念最早在 2016 年底被…

[C++]内存管理

目录 内存管理&#xff1a;&#xff1a; 1.C/C内存分布 2.C语言中动态内存管理方式 3.C中动态内存管理 4.operator new与operator delete函数 5.new和delete的实现原理 6.定位new表达式 7.内存泄漏 内存管理&#xff1a;&#xff1a; 1.C/C内存分布 int globalVar 1; stati…