当前位置: 首页 > news >正文

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

在这里插入图片描述

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

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

待整理

相关文章:

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

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

padans关于数据处理的杂谈

情况:业务数据基本字段会有如下: Index([时间, 地区, 产品, 字段, 数值], dtypeobject)这样就会引发一个经典“三角不可能定理”,如何同时简约展现分时序、分产品、分字段数据。)一般来说, 1、时序为作为单独的分类&…...

神经网络的理解

文章目录 概念得分函数损失函数神经网络结构非线性激活函数神经网络运行过程神经网络能够做的事情概念 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并…...

夏驰和徐策带你从零开始学数据结构——哈希表

哈希表的概念: 哈希表是一种常用的数据结构,它可以在 O(1) 的时间复杂度内执行插入、查找和删除操作。哈希表的核心思想是使用哈希函数将键值对映射到数组中的一个位置上,从而实现快速的访问和修改。 哈希表由两个主要部分组成:…...

linux实现网络程序

1️⃣ 在linux下,通过套接字实现服务器和客户端的通信。 2️⃣ 实现单线程、多线程通信。或者实现线程池来通信。 3️⃣ 优化通信,增加守护进程。 有情提醒,类里面默认的函数是内联。内联函数在调用的地方展开,没有函数地址&…...

FreeRTOS 队列(二)

文章目录 一、向队列发送消息1. 函数原型(1)函数 xQueueOverwrite()(2)函数 xQueueGenericSend()(3)函数 xQueueSendFromISR()、xQueueSendToBackFromISR()、xQueueSendToFrontFromISR()(4&…...

用python获取当前目录下的创建时间超过3天的所有python文件

直接上代码: import os import datetime print(os.getcwd()) # 获取当前目录下所有的html文件 html_files [] for filename in os.listdir(): if filename.endswith(.py): html_files.append(os.path.join(., filename)) now date…...

第五章 Linux实际操作——用户管理

第五章 Linux实际操作——用户管理 5.1 基本介绍5.2 添加用户5.3 指定、修改密码5.4 删除用户5.5 查询用户信息指令5.6 切换用户5.7 查看当前用户、登录用户5.8 用户组5.9 用户和组相关文件8.9.1/etc/passwd 文件8.9.2/etc/shadow文件8.9.3/etc/group文件 5.1 基本介绍 Linux系…...

悲观锁和乐观锁详细

悲观锁和乐观锁详细 悲观锁 ​ 悲观锁就是悲观的思想,他认为数据每一次被访问的时候都会被上锁,所以每次获得锁的时候都会上锁,这样其他线程想要获取这个锁的时候就会被堵塞,要等待上一个线程锁的释放。也就是说这个线程只一次只…...

三谈ChatGPT(ChatGPT可以解决问题的90%)

这是我第三次谈ChatGPT,前两篇主要谈了ChatGPT的概念,之所以火的原因和对人们的影响,以及ChatGPT可能存在的安全风险和将面临的监管问题。这一篇主要讲讲ChatGPT的场景和处理问题的逻辑。 这一次我特意使用了ChatGPT中文网页版体验了一番。并…...

Qt QSet 详解:从底层原理到高级用法

目录标题 引言:QSet的重要性与简介QSet 的常用接口迭代器:遍历Qset 中的元素(Iterators: Traversing Elements in Qset )高级用法:QSet 中的算法与功能(Advanced Usage: Algorithms and Functions in QList…...

Mac Doxygen的使用

Doxygen的使用 安装着Doxygen和Graphviz这两个东西 在源码目录先使用doxygen -g生成一个叫 ‘Doxyfile’ 的Doxygen的配置文件修改配置文件,里面都有介绍各个选项的功能,这里主要修改一下几个: HAVE_DOT YES EXTRACT_ALL YES EXTRACT_PRIVATE YES E…...

FPGA基础代码复用

一、verilog中有关代码复用的语法 1、连接符“{}” {4{1b1}} 或者 {5d6, 5d8} 2、参数(Parameter)型常量定义 parameter 参数名=表达式; 或者 localparam 参数名=表达式; parameter DATA_WIDTH 20; 3、function函数定义 …...

Hbase简介

HBase简介 一、HBase简介 1. HBase简介 (1) apache的顶级项目,hadoop的数据库,分布式、大规模的大数据存储。 HBase是Google的BigTable的开源java版本,建立在hdfs之上的,分布式、列存储、非关系(nosql、key-value&a…...

科海思除COD树脂,大孔树脂,除COD专用树脂

一、产品介绍 Tulsimer A-722 MP具有控制孔径的大孔强碱性Ⅰ型阴离子交换树脂 Tulsimer A-722 MP 是一款具有便于颜色和有机物去除的控制孔径的,专门开发的大孔强碱性Ⅰ型阴离子交换树脂。 Tulsimer A-722 MP(氯型)专门应用于去除COD…...

Qt 多线程 QThread、QThreadPool使用场景

QThread 和 QRunnable 都是 Qt 框架中用于多线程编程的类,它们之间有以下不同点: 继承关系不同 QThread 继承自 QObject 类,而 QRunnable 没有父类。 实现方式不同 QThread 是一个完整的线程实现,包含了线程的创建、启动、停止、…...

如何一招搞定PCB阻焊过孔问题?

PCB阻焊油墨根据固化方式,阻焊油墨有感光显影型的油墨,有热固化的热固油墨,还有UV光固化的UV油墨。而根据板材分类,又有PCB硬板阻焊油墨,FPC软板阻焊油墨,还有铝基板阻焊油墨,铝基板油墨也可以用…...

【代码随想录】刷题Day2

1.左右指针比大小 977. 有序数组的平方 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vector<int> ret nums;int left 0;int right nums.size()-1;int end nums.size();while(left<right){if(abs(nums[left])>abs…...

Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…...

计及调度经济性的光热电站储热容量配置方法【IEEE30节点】(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …...

“不要放过这个春天”解锁品牌春日宣传新玩法

在万物复苏的春天&#xff0c;人们换新装、踏青等需求蓄势待发&#xff0c;出现了全民消费热情高涨的趋势&#xff0c;让品牌「贩卖春天」的宣传此起彼伏。 品牌洞察到用户的消费需求&#xff0c;打造具有品牌特色的浪漫宣传&#xff0c;如采用春日限定元素、创新春天宣传场景…...

利用GPT2 预测 福彩3d预测

使用GPT2预测福彩3D项目 个人总结彩票数据是随机的,可以预测到1-2个数字,但是有一两位总是随机的 该项目紧做模型学习用,通过该项目熟练模型训练调用生成过程. 福彩3D数据下载 https://www.17500.cn/getData/3d.TXT data数据格式 处理后数据格式 每行 2023 03 08 9 7 3 训…...

类加载过程

基本说明 反射机制是Java实现动态语言的关键&#xff0c;也就是通过反射实现类动态加载。 静态加载&#xff1a;编译时加载相关的类&#xff0c;如果没有则报错&#xff0c;依赖性太强动态加载&#xff1a;运行时加载需要的类&#xff0c;如果运行时不用该类&#xff0c;即使…...

【C/C++】C++11 无序关联容器的诞生背景

文章目录 背景无序关联容器适用场景有序关联容器适用场景 背景 C11 引入了无序关联容器&#xff08;unordered_map、unordered_set、unordered_multimap 和 unordered_multiset&#xff09;是为了提供一种高效的元素存储和查找方式。相比于有序关联容器&#xff08;map、set、…...

h264编码原理

在介绍编码器原理之前首先了解三个制定编码标准的组织&#xff1a; 1.国际电信联盟(ITU-T)&#xff0c;这是一个音视频领域非常强的组织&#xff0c;规定了很多标准如h261&#xff0c;h262&#xff0c;h263&#xff0c;h263。h263也就是h264的前身。 2.国际标准化组织(ISO)&…...

网络工程师经常搞混的路由策略和策略路由,两者到底有啥区别?

当涉及到网络路由时&#xff0c;两个术语经常被混淆&#xff1a;策略路由和路由策略。虽然这些术语听起来很相似&#xff0c;但它们实际上有着不同的含义和用途。在本文中&#xff0c;我们将详细介绍这两个术语的区别和应用。 一、路由策略 路由策略是指一组规则&#xff0c;用…...

高精度气象模拟软件WRF实践技术

【原文链接】&#xff1a;高精度气象模拟软件WRF(Weather Research Forecasting)实践技术及案例应用https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247538149&idx3&sn3890c3b29f34bcb07678a9dd4b9947b2&chksmfe68938fc91f1a99bbced2113b09cad822711e7f…...

总结827

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 高等数学&#xff1a;刷1800&#xff0c;做了26道计算题&#xff0c;记录两道错题&#xff0c;搞懂了&#xff0c;但并不…...

还在发愁项目去哪找?软件测试企业级Web自动化测试实战项目

今天给大家分享一个简单易操作的实战项目&#xff08;已开源&#xff09; 项目名称 ET开源商场系统 项目描述 ETshop是一个电子商务B2C电商平台系统&#xff0c;功能强大&#xff0c;安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城…...

总结下Spring boot异步执行逻辑的几种方式

文章目录 概念实现方式Thread说明 Async注解说明 线程池CompletableFuture&#xff08;Future及FutureTask&#xff09;创建CompletableFuture异步执行 消息队列 概念 异步执行模式&#xff1a;是指语句在异步执行模式下&#xff0c;各语句执行结束的顺序与语句执行开始的顺序…...