【前端面试3+1】12 toktn验证过程、面向对象特性、webpack和vite的区别、【字符串中的第一个唯一字符】

news2024/11/24 16:21:34

一、token验证过程

  1. 用户登录:用户提供用户名和密码进行登录。
  2. 服务器验证:服务器接收到用户提供的用户名和密码,进行验证。
  3. 生成token:如果用户名和密码验证通过,服务器会生成一个token,通常包含一些加密的信息,如用户ID、过期时间等。
  4. 返回token:服务器将生成的token返回给客户端(通常是前端应用)。
  5. 存储token:客户端通常会将token存储在本地,如LocalStorage或SessionStorage中。
  6. 发送token:客户端在每次请求需要验证的资源时,会将token发送到服务器。
  7. 验证token:服务器接收到token后,会解析token并验证其有效性,包括检查token是否过期、是否被篡改等。
  8. 授权访问:如果token验证通过,服务器会允许客户端访问请求的资源;否则,拒绝访问并返回相应的错误信息。

二、面向对象的特性有哪些?

         面向对象编程(Object-Oriented Programming,OOP)是一种常用的编程范式,其中包含了一些重要的面向对象特性,主要包括以下几点:

1.封装

        封装是将数据(属性)和行为(方法)打包在一个单元中,并对外部隐藏对象的内部实现细节的过程。

        通过封装,对象提供了一个清晰的界面,其他对象可以通过该界面与对象进行交互,而无需了解对象内部的具体实现。

封装有助于提高代码的可维护性和安全性,同时降低了对象之间的耦合度。

2.继承

        继承是指一个类(子类)可以继承另一个类(父类)的属性和方法,从而可以重用父类的代码,并在此基础上进行扩展。

        继承可以帮助实现代码的重用,减少重复编写代码的工作量,同时也有助于建立类之间的层次关系。

3.多态

        多态是指同一个方法可以根据对象的不同类型表现出不同的行为。在多态中,同一个方法可以被不同的对象调用,产生不同的结果。

        多态性使得代码更加灵活,可以根据具体对象的类型来调用相应的方法,提高了代码的可扩展性和可维护性。

4.抽象

        抽象是指将对象的共性特征提取出来,形成一个抽象类或接口,隐藏对象的具体实现细节,只展示对象的关键特征和行为

        抽象提供了对现实世界的建模方法,可以更好地理解和设计复杂系统,同时也有助于降低系统的复杂性。

三、 webpack和vite 区别

Webpack 和 Vite 都是前端构建工具,但它们在实现方式和使用场景上有一些区别:

1.Webpack

  • Webpack 是一个功能强大的静态模块打包工具,可以将各种资源(如 JavaScript、CSS、图片等)打包成静态文件
  • Webpack 需要通过配置文件来定义打包规则,包括 entry、output、loader、plugin 等,功能非常灵活且可定制性强。
  • Webpack 适用于大型项目,可以处理复杂的构建需求,支持代码分割、懒加载、热更新等功能。

2.Vite

  • Vite 是一个基于 ES Modules 的现代化前端构建工具,旨在提供快速的开发体验。
  • Vite 使用原生 ES Module 的方式加载模块,不需要提前将代码打包成静态文件,而是在浏览器端实时编译和加载模块
  • Vite 支持热更新,开发模式下可以实现秒级的冷启动,提供了快速的开发环境和高效的开发体验。
  • Vite 更适合于小型项目或快速原型开发,对于现代化的前端框架(如 Vue 3、React)有更好的支持

        Webpack 更适合处理复杂的构建需求和大型项目,而 Vite 则更适合快速开发和轻量级项目,提供了更快的开发体验。

四、 【算法】字符串中的第一个唯一字符

1、题目:

        给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

int firstUniqChar(char* s) {
   }

2、解题:
 

int firstUniqChar(char* s) {
    int count[26] = {0}; // 用于记录每个字母出现的次数
    int len = strlen(s);
    
    // 第一次遍历,统计每个字母出现的次数
    for (int i = 0; i < len; i++) {
        count[s[i] - 'a']++;
    }
    
    // 第二次遍历,找到第一个出现次数为1的字母,返回其索引
    for (int i = 0; i < len; i++) {
        if (count[s[i] - 'a'] == 1) {
            return i;
        }
    }
    
    return -1; // 未找到不重复字符,返回-1
}

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

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

相关文章

代码随想录阅读笔记-回溯【复原IP地址】

题目 给定一个只包含数字的字符串&#xff0c;复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201…

最新AI模型与Python技术处理和分析气候数据:ChatGPT在大气科学领域建模、数据分析、可视化与资源评估中的高效应用及论文写作

本文深度探讨人工智能在大气科学中的应用&#xff0c;特别是如何结合最新AI模型与Python技术处理和分析气候数据。课程介绍包括GPT-4等先进AI工具&#xff0c;旨在帮助大家掌握这些工具的功能及应用范围。课程内容覆盖使用GPT处理数据、生成论文摘要、文献综述、技术方法分析等…

力扣2923、2924.找到冠军I、II---(简单题、中等题、Java、拓扑排序)

目录 一、找到冠军I 思路描述&#xff1a; 代码&#xff1a; 二、找到冠军II 思路描述&#xff1a; 代码&#xff1a; 一、找到冠军I 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足…

DNF手游攻略:2024新手攻略大全

在《DNF手游》的世界中&#xff0c;前期阶段对于新手玩家来说至关重要。以下是一份综合整理的新手攻略&#xff0c;帮助玩家快速适应游戏并取得进展。 1. 角色建立策略&#xff1a; 在前期&#xff0c;建议玩家建立3个角色&#xff0c;包括1个大号和2个小号。大号可以根据个人喜…

从电子病历(EMRs)构建医学知识图谱

从电子病历 EMRs 构建医学知识图谱 提出背景传统的三元组结构本研究采用的四元组结构第四元作用第四元类型以往的方法本研究的方法 大威天龙八 论文&#xff1a;Real-world data medical knowledge graph: construction and applications 提出背景 本研究在中国一家三甲医院的…

【GD32】MQ-5液化气检测传感器

2.33 MQ-5液化气检测传感器 MQ-5气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sno2)。当传感器所处环境中存在可燃气体时&#xff0c;传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为该气体浓度相对应的输出信号。…

ExpressLRS硬件实测性能分析

ExpressLRS硬件实测性能分析 1. 源由2. 远航测试3. 实验室测试3.1 芯片RSSI与实测功率差异3.2 SNR信噪比稳定3.3 140db衰减器衰减&#xff0c;40个频点信号稳定 4. 外场测试4.1 无屏蔽样品4.2 有屏蔽样品4.3 有屏蔽vs无屏蔽样品 5. 估算6. 总结7. 补充说明 -- 50mW视频 1. 源由…

1.3 字符设备驱动

1、字符设备驱动工作原理 2、file_operations结构体 struct file_operations { struct module *owner; //拥有该结构的模块的指针&#xff0c;一般为THIS_MODULES loff_t (*llseek) (struct file *, lof…

【日常记录】【CSS】生成动态气泡小球

文章目录 1、分析2、实现 1、分析 核心有两点&#xff0c;通过这两个不一样就可以实现每个小球的颜色、动画时间不一致 给每个元素都设置一个css 变量 bgc 用于控制每一个小球的颜色给每个元素都设置一个css 变量 duration 用于控制每一个小球的时间 2、实现 <!DOCTYPE ht…

java中的线程通讯和线程池,Callable任务

线程通讯&#xff1a; 在多线程中&#xff0c;某个线程进入“等待状态”时&#xff0c;需要某个线程来唤醒 等待方法&#xff1a; wait()//无线等待 wait(long 毫秒)//计时等待 注意&#xff0c;调用wait方法&#xff0c;会自动释放掉锁资源 处于wait状态只能由其他线程唤醒 唤…

信创产品适配的前因后果

“信创”的本意是指“信息技术应用创新”。这个概念最早来源于“信创工委会”&#xff08;信息技术应用创新工作委员会&#xff09;&#xff0c;一个由24家专业从事软硬件关键技术研究及应用的国内单位&#xff0c;在2016年共同发起成立的非营利性社会组织。近些年来&#xff0…

GitHub repository - commits - branches - releases - contributors

GitHub repository - commits - branches - releases - contributors 1. commits2. branches3. releases4. contributorsReferences 1. commits 在这里可以查看当前分支的提交历史。左侧的数字表示提交数。 2. branches 可以查看仓库的分支列表。左侧的数字表示当前拥有的分…

android studio 网络请求okhttp3、okgo

一、在build.gradle文件里添加 implementation com.squareup.okhttp3:okhttp:4.9.0 implementation com.squareup.okhttp3:okhttp:3.12.0 implementation com.squareup.okio:okio:1.17.4 implementation com.lzy.net:okgo:3.0.4 implementation com.alibaba:fastjson:1.2.57 i…

25、链表-环形链表

思路&#xff1a; 这道题就是判断链表中是否有环&#xff0c;首先使用集合肯定可以快速地解决&#xff0c;比如通过一个set集合遍历&#xff0c;如果遍历过程中有节点在set中已经存在那么说明存在环。 第二种方式就是通过快慢指针方式寻找环。具体思路就是一个慢指针每次直走一…

Android适配平板屏幕尺寸

一、划分手机和平板 人为判断方法: 大于6英寸的就是平板。小于6英寸的都是手机 平板尺寸&#xff1a; 6英寸、7英寸、10英寸、14英寸… Android系统支持多配置资源文件&#xff0c;我们可以追加新的资源目录到你的Android项目中。命名规范&#xff1a; 资源名字-限制符 l…

2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 B题 甲骨文智能识别中原始拓片单字自动分割与识别研究 原题再现&#xff1a; 甲骨文是我国目前已知的最早成熟的文字系统&#xff0c;它是一种刻在龟甲或兽骨上的古老文字。甲骨文具有极其重要的研究价值&#xff0c;不仅对中国文…

Go程序设计语言 学习笔记 第十一章 测试

1949年&#xff0c;EDSAC&#xff08;第一台存储程序计算机&#xff09;的开发者莫里斯威尔克斯在他的实验室楼梯上攀登时突然领悟到一件令人震惊的事情。在《一位计算机先驱的回忆录》中&#xff0c;他回忆道&#xff1a;“我突然完全意识到&#xff0c;我余生中的很大一部分时…

2024妈妈杯mathorcup数学建模C题 物流网络分拣中心货量预测及人员排班

一、数据预处理 数据清洗是指对数据进行清洗和整理&#xff0c;包括删除无效数据、缺失值填充、异常值检测和处理等。数据转换是指对数据进行转换和变换&#xff0c;包括数据缩放、数据归一化、数据标准化等。数据整理是指对数据进行整理和归纳&#xff0c;包括数据分组、数据聚…

一文读懂Java中的WebEndpointProperties类(附Demo)

目录 前言1. 基本知识2. Demo3. 彩蛋 前言 对于Java的相关知识&#xff0c;推荐阅读&#xff1a;java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09; 1. 基本知识 Spring Boot 的配置类 WebEndpointProperties&#xff0c;用于配置 Web 端…

【python】基于pyttsx3库的字符串转音频文件

一、源码 import pyttsx3 engine pyttsx3.init() engine.setProperty(volume, 0.8) engine.setProperty(rate, 150) engine.save_to_file("Hello, World!", "output.mp3") engine.runAndWait()二、介绍 使用pyttsx3库&#xff0c;设置声音与速率&#x…