前端面试:项目细节|项目重难点|已工作|做分享

news2025/1/21 1:03:45

面试官提问:分享一个项目中记忆比较深刻的需求?说说你是怎么解决的?解决过程有没有遇到什么困难?

答:我的回答(我分点写思路,便于大家观看):

(1)需求场景【需求文档会阐述】:

用户先使用单选下拉框选择等级->再点击上传文件按钮并将文件名展示出来->最后把上传后的文件点击提交按钮完成操作:这是一个我使用原生3件套绘制的原型图,主要为了方便大家清楚了解效果即可,样式我没做优化:

41da72233fb845d187abf72eae77f337.png 

(2)业务逻辑(特殊要求)【需求文档也会阐述,但我们作为开发还是先把需求理解清楚后,自己先思考思考整个业务逻辑的合理性和常规性,最后才是动手写代码!】:

第1种情况:先选择等级再上传后提交:

选择1、2、3等级->要求:只能上传以doc、docx作为后缀名的文件->如果上传其它后缀名的文件,禁止上传,并作出提示;

选择其它等级->可以上传任意后缀名的文件;

第2种情况:修改等级后直接提交:

先选择1、2、3等级->上传文件->直接会对上传的文件格式做出限制;

但当选择其它等级后->用户上传了不是以doc、docx结尾的后缀名文件->再次修改为1、2、3等级->所以必须在提交时对全部展示在页面的文件后缀名全部做一遍校验->如果所有文件都符合以doc、docx结尾的后缀名,直接提交即可->但如果有部分文件不符合或全部文件都不符合以doc、docx结尾的后缀名,则直接对在该文件下方做出文字提示:文件格式不符,请重新上传并把该文件使用红框给框住!

(3)这个需求为什么让我记忆深刻:

因为产品让我做2次同样的文件格式校验:只要等级变化、上传的文件变化和提交文件都要对页面上所有展示的文件格式进行校验并用红框框住提醒用户该文件格式不符要求;当时我的疑问是:最终目的只是用户提交时希望1、2、3级只能提交以doc、docx结尾的文件,但是在上传文件做校验红框框住没什么作用,而且提醒了用户页不一定删除重新上传,于是,我就和产品协商修改这个需求:当用户选择1、2、3等级时未上传以doc、docx结尾的文件,直接不让上传即可;当用户选择其它等级上传文件,再次修改为1、2、3等级时,再提交是如果不符合要求,直接不能提交并提示用户哪个文件不符要求,需要重新上传即可!【所以大家在做需求时虽然要按照文档来,但也要自己思考思考整个设计的合理性,一起协商出相对合理的需求】

(4)动手做一做:看到这里,你可以根据我的描述来实现实现这个需求,这是一个很好的实践机会,或许你完成这个需求后,你也可作为自己项目重难点(问题、亮点等)去向面试官展示噢!接下来是我的解决思路分析,看看我们思路是否一致!

(5)完成整个需求的过程中我也确实遇到了问题:页面上展示的文件是通过<ul v-for=”file in files”></ul>循环遍历展示,那么每个文件的HTML结构都是<li>{{file.name}}</li>,但用户点击提交后,我得根据是否符合上传文件的格式对每个文件的样式做调整:符合格式,样式不变;但不符格式,样式改变,即使用一个红框框住该文件名,提醒用户该文件格式有误,需要重新上传文件。

第1种想法【总结:通过最后一个上传后的文件格式是否符合要求来显示红框和提交】详述:校验我直接在提交时对所有文件格式校验,然后当不符合格式时,给出一个showToast=true,即添加红框style=”{border:showToast?’1px red solid’ : none;}”,否则就将showToast=false;结果就是上传了不符合格式的文件,所有文件都会被红框框住,这肯定是不符合需求的页面效果!

fb904f4a5d2248519334e0c2432f1d21.png

750da8276ed143049e1ae9dc03ca6194.png  

第2种想法【总结:通过最后一个文件格式是否符合格式要求来决定是否给最后一个元素添加特殊样式和提示】详述:我直接在上传后就获取最后一个上传的文件li元素,不符合格式的文件直接通过li.style.border=”1px solid red”给该元素设置红框,但我发现我永远只能获取到倒数第二个文件的li元素,因为最后一个文件li元素还没渲染在页面,肯定无法获取,所以页面显示效果就是每次都是倒数第二个文件设置样式成功了!但需求效果是要对不符格式的文件都要设置红框样式和文字提示,这种方法也失败了!

e647ffae19484082837ecdec519a54c1.png195e54ffd3e342d598684194bcb5c5a5.png

第3种想法:【总结:通过单独给每个文件添加一个属性判断是否格式要求,从而决定是否显示红框和提示】详述:用户上传文件后,我对每个文件进行格式校验时,如果不符合文件格式,就直接给files对象添加一个isMatchFormat属性,那我在点击提交,遍历files时,就可通过isMatchFormat的true/false来控制是否展示红框和提示信息了style=”{border:isMathFormat ? none:’1px red solid’ ;}”;这种做法页面效果终于成功了!

d5b4449eb27c4feda7d13e4099d6405b.png

6372f10e1c1844319db33edc1cda958b.png 

 

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

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

相关文章

如何实现数字化校园的高效运维

随着科技开展&#xff0c;国家大力支持各级各类学校建造数字化学校&#xff0c;综合利用互联网、大数据、人工智能和虚拟现实技能探究未来教育教育新模式。因为数字化学校的快速开展&#xff0c;学校网内设备类型很多&#xff0c;网络拓扑杂乱&#xff0c;信息运用繁复。各部门…

如何实现短链接跳转到微信小程序?怎么保证永久有效?

家人们&#xff0c;在如今这互联网高度发达的时代&#xff0c;流量那可真是生命线啊&#xff01;那每个运营者都得面对的一个关键问题就是&#xff1a;咋有效地进行引流。今儿个&#xff0c;咱就好好唠唠咋实现短链接跳转到微信小程序&#xff0c;还有咋保证小程序短链接能永久…

Linux(多线程)

//blockQueue.hpp #pragma once #include <iostream> #include <queue> #include <pthread.h> const int gcap 5; template <class T> class BlockQueue { public:BlockQueue(const int cap gcap):_cap(cap)//初始化阻塞队列的容量{pthread_mutex_in…

新一代GPT!GPT-4O:更快、更懂人类情感的人工智能新纪元

今天凌晨&#xff08;5.14凌晨&#xff09;&#xff0c;OpenAI 的 GPT-4O 版本在自然语言处理领域带来了革命性的改变。不仅在处理速度上获得了显著提升&#xff0c;GPT-4O 还增加了对人类情感的理解能力&#xff0c;这使得它在与人类的交互中更加自然和富有同理心。本文将深入…

相同的树LeetCode

100. 相同的树 - 力扣&#xff08;LeetCode100. 相同的树 - 力扣&#xff08; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 /*** Definition…

Python 运筹优化13 Thompson Sampling 解读

说明 这部分应该是Multi-Armed Bandit的最后一部分了。 内容 1 On Line Ads 这个实验&#xff0c;最初的目的就是为了选出最佳的广告。首先&#xff0c;通过伯努利分布&#xff0c;模拟了某个广告的有效率。在真实场景里&#xff0c;我们是无法知道那个广告更好的。可能在t…

css中用于设置光标颜色的属性

caret-color 是一个 CSS 属性&#xff0c;它用于定义输入光标&#xff08;caret&#xff09;的颜色。这里的“插入光标”&#xff08;insertion caret&#xff09;指的是在网页的可编辑器区域内&#xff0c;用来指示用户的输入具体会插入到哪里的那个一闪一闪的形似竖杠 | 的东…

25考研数学,强化跟张宇还是武忠祥?

高数基础阶段结束&#xff0c;每年会有很多人&#xff0c;由于各种原因&#xff0c;在强化阶段换老师。 要提醒大家的是&#xff1a;25的情况和以前不一样&#xff01; 原因包括各位老师的课程大幅改动&#xff0c;以及24命题的变化。 首先看可行性&#xff1a;强化换武忠祥可…

可重构柔性装配产线:为工业制造领域注入了新的活力

随着科技的飞速发展&#xff0c;智能制造正逐渐成为引领工业革新的重要力量。在这一浪潮中&#xff0c;可重构柔性装配产线以其独特的技术优势和创新理念&#xff0c;为工业制造领域注入了新的活力&#xff0c;开启了创新驱动的智能制造新篇章。 可重构柔性装配产线是基于富唯智…

【全开源】Java情侣飞行棋系统微信小程序+H5+微信公众号+APP 源码

情侣飞行棋是一款专为情侣设计的游戏&#xff0c;具有多种特色功能和优势 特色功能&#xff1a; 实时互动&#xff1a;情侣飞行棋支持实时互动&#xff0c;情侣们可以同时进行游戏&#xff0c;共同制定策略、掷骰子、移动棋子等操作。这种实时的互动方式让情侣们更加紧密地联系…

OV通配符/泛域名SSL证书怎么获取和安装

OV通配符/泛域名SSL证书的获取和安装主要可以分为以下几个步骤&#xff1a; 一、获取证书 1. 选择服务商 选择一个提供OV通配符SSL证书的服务商&#xff0c;例如JoySSL。 2. 提交申请 在服务商网站上选择OV通配符SSL证书产品&#xff0c;填入基础信息&#xff0c;如公司名…

【数据结构】线性表--顺序表(二)

文章目录 1、什么是线性表2、线性表的基本操作3、顺序表3.1、顺序表的定义3.2、顺序表的实现方式&#xff1a;静态分配3.3、顺序表的实现方式&#xff1a;动态分配3.4、顺序表的特点3.5、顺序表的初始化与插入操作3.6、顺序表的删除与查询 1、什么是线性表 ​ 线性表是具有相同…

阿里云服务器下,部署LNMP环境安装wordpress

目录 1 LNMP部署1、简单说明2、nginx部署3、php8 安装4、mysql8安装5、配置 nginx 实现支持 PHP 程序6、安装 php 组件7、测试 2 wordpress部署1、安装2、配置 总结 1 LNMP部署 1、简单说明 首先需要明白&#xff0c;LNMP指的是Linux、Nginx、MySQL、PHP。而如果使用阿里云服…

idea上如何新建git分支

当前项目在dev分支&#xff0c;如果想在新分支上开发代码&#xff0c;如何新建一个分支呢&#xff1f;5秒搞定~ 1、工具类选择git&#xff0c;点击New Branch 或者右下角点击git分支&#xff0c;再点击New Branch 2、在弹出的Create New Branch弹窗中&#xff0c;输入你的新分支…

OpenNJet:引领下一代云原生应用引擎

文章目录 一、前言二、什么是OpenNJet 应用引擎三、OpenNJet的优势3.1 性能无损动态配置3.2 灵活的CoPilot框架3.3 支持HTTP/33.4 支持国密3.5 企业级应用3.6 高效安全 四、centos 安装4.1 生成njet.repo4.2 更新yum 缓存4.3 安装 njet 或 njet-otel 五、OpenNJet配置与部署5.1…

面 试 题

过滤器和拦截器的区别 都是 Aop 思想的一种体现&#xff0c;用来解决项目中 某一类 问题的两种接口(工具)&#xff0c;都可以对请求做一些增强 出身 过滤器来自 servlet 拦截器来自 spring 使用范围 过滤器 Filter 实现了 iavax.servlet.Filter 接口&#xff0c;也就是说…

33三个启动菜单的区别辨析与本质探索

三个启动菜单的区别辨析与本质探索 你是否傻傻分不清以下三种启动菜单的本质到底是什么&#xff1f; 有一个看起来非常古老生硬&#xff0c;蓝色大背景&#xff0c;字母丑陋&#xff1b; 还有一个看起来老气横秋&#xff0c;黑底白字&#xff0c;像极了远古时期的电脑报废的样…

对于fastjson之rmi利用问题的解决

前言 也是被一个问题困扰了好久&#xff0c;都要崩溃了&#xff0c;就为了一个问题调试半天的代码&#xff0c;最后终于解决了&#xff0c;现在做一个记录&#xff0c;幸好没有放弃&#xff0c;感觉学java是比较慢的&#xff0c;但是学java就是重在分析能力的提升&#xff0c;…

Linux中的网络隔离功能 netns

Network Namespace&#xff08;netns&#xff09; 是Linux内核提供的一项实现网络隔离的功能&#xff0c;它能隔离多个不同的网络空间&#xff0c;并且各自拥有独立的网络协议栈。通过 namespace 可以隔离容器的进程 PID、文件系统挂载点、主机名等多种资源&#xff0c;它可以为…

26版SPSS操作教程(高级教程第二十一章)

目录 前言 粉丝及官方意见说明 第二十一章一些学习笔记 第二十一章一些操作方法 信度分析 问卷信度分析 假设数据 具体操作 结果解释 下面进行进一步分析 结果解释 其他常用信度系数介绍 概化理论SPSS中的实现 结果解释 项目反应理论&#xff08;item respons…