总结
为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。
内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。
包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。
前端面试题汇总
JavaScript
性能
linux
非结构化数据服务平台在设计上采用低耦合思路,分为表象层,业务逻辑层,数据访问层的三层架构,它会将业务产生的图像数据扫描归档到影像平台,并实现影像的查询、条码打印、按顺序批量打包下载影像文件的归档、修改归档、拷贝归档、分类查询、阶段标示绑定关系、影像操作日志等功能。
表现层(UI)展现给用户操作的界面,包含多个调用渠道。本平台以渠道为单位,针对各个渠道进行管理,提供一个安全可靠的环境,保证数据实时性的同时保证服务的稳定性。这些渠道主要通过http/https协议和数据上传平台进行通信,保证传输过程中数据的安全性。这些渠道在本系统中只是以影像数据传输接入,没有业务逻辑,各个渠道具体限制由管理平台配置化实现。
业务逻辑层由非结构化数据集中处理平台(UCP)服务及三方数据上传平台应用服务组成,三方数据上传平台主要负责处理非结构化数据业务逻辑,UCP主要实现非结构化数据的存储,该平台支持大部分行内业务系统的非结构化数据处理服务,少量有高定制化需求的业务,UCP提供非标准接口,有针对性的为信贷类业务系统定制化开发,实现其全流程信贷系统非结构化数据的存储以及下载,而针对无定制化其他渠道,均通过标准接口进行满足。三方数据上传平台APP主要实现互联网系统非结构化数据的校验、控制、缓存以及压力均衡。
数据层主要由非结构化存储ElasticSearch(ES)分布式搜索服务,配合轻量级的传统DB与后端高、中、低性能网络存储共同构成。ES主要负责保存UCP写入的元数据,并可高效完成大量非结构化数据的搜索和分析;传统DB主要负责配置信息以及部分日志信息的存储;采用开源软件定义存储,主要负责非结构化数据的归档,高速网络存储部分可作为上传平台影像文件缓存,提高ES索引存调速度,最后通过归档流转规则进行非结构化数据的动态迁移与归档保存。
三、基本组成
1、接口服务
标 准接口基于REST方式实现,调用方以REST API调用方式调用即可; 调用方根据Content-Type字段的值完成单张或批量打包的操作,配合数据的字段标签,上送不同的文件类型,如图片格式(jpg、jpeg、tif、tiff、png、bmp)、word、pdf、excel等常见格式; 另外配合接口中请求类型的不同,可实现上传、下载、替换和删除等操作请求; 标准控件调用时,接口字段除接口参数以外,会增加控件类型ID,接口名和返回值,非标准接口会在标准接口基础之上,为信贷类业务流程单独定制接口类型,结合业务具体需求,增加查看控件调用方式,动作类型以及对客对司的功能编号等字段。
物理结构上由2台非标准影像应用服务器通过应用负载对接信贷系统渠道,3台标准影像应用服务器通过负载均衡对接行内其他业务系统渠道;互联网业务数据通过三方上传平台处理之后,会对接影像应用服务器。
2、索引服务
ES 索引服务主要负责索引(存入)与检索(调阅)两部分,其中索引部分包含分词器、过滤器、字符映射器等,检索部分包含查询解析器等。 其索引是先在内存里生成,然后定期以段文件的形式将元数据刷到磁盘的。 每段写到磁盘上之后是不能被修改的,一个段文件就作为了一个实际上的索引,字段就是最小的检索域。
物理结构上由5台索引数据库组成高扩展性的分布式ES索引集群,在任意一个节点宕机时,整个集群的服务依然可用,且由于具有副本设置,保证数据完整性。
3、存储服务
存储 服务作为非结构化数据文件的载体,需要充分利用存储,降低存储成本,保证数据安全和服务质量。 作为基础服务平台,为高效率利用存储,将其分为在线、近线(GFS分布式存储管理)、离线存储配合影像数据文件的归档控制。
本平台存储服务在线区域存储指存储设备的响应速度和所存储的数据时刻保持“在线”状态,可供行内用户随存取与调阅,满足对数据访问速度的要求。这部分目前采用带有去重压缩功能的SSD NAS实现,可用容量在10TB,价格相对昂贵,但性能较好。
近线存储选择相对较广泛,主要定位于在线存储和离线存储之间,将那些存调频率相对较低,或者说数据的访问量相对较小的数据存放在性能稍低的存储设备上。近线存储对性能要求相对来说并不高,但要求相对较好的访问性能,各业务系统不常用的数据要占总数据量较大比重,这要求近线存储设备容量相对较大,因此近线部分采用基于PC服务器实现横向扩展的三副本GlusterFileSystem ,可用容量超100TB,虽然维护成本上升,但性能和安全性都比较高,价格也得到有效控制。
离线存储被设计存放不常被业务系统调用,但仍需要长期或永久保存的冷数据存储区域,存储介质通常选择访问速度慢、效率低的存储设备,系统最初选择低成本的NAS设备,后续优化后,更改为物理磁带库,数据的存放介质变为磁介质后,价格相对低廉。
4、非结构化数据的生命周期管理与数据分层迁移
影像平台的在线存储区目前使用SSD NAS,保障关键生产系统的快速写入,但总体容量有限;影像平台的近线存储区会定期将在线数据,无缝、安全、可靠的迁移到近线区域,一方面解决大量近线非结构化数据的存放空间与成本问题,另一方面保障调阅的速度,以及与结构化交易数据的一一映射关系,实现应用系统透明访问;影像平台的离线存储区,按照数据全生命周期管控的规则,自动将近线数据迁移到离线区,并同步备份与结构化交易数据的映射关系,确保应用系统直接调阅,或者由影像平台提供离线查阅功能调阅。
非结构化数据由在线到近线、由近线到离线的迁移过程中,保证下列关键性控制功能。首先,按照规则自动化或半自动化(或由作业调度系统调度工具)完成,并且提供MD5校验/哈希值比对功能,确保备份数据的可靠归档,应删除数据的安全可控删除。其次,由在线到近线的迁移,为确保应用系统可透明访问被迁移数据,需实现可靠程的原文件路径操作系统连接处理,最后,由近线到离线的迁移,需同步更新影像文件的全路径名称与结构化数据的映射关系,确保离线数据可回调到近线进行查阅,并同步清理在线区域的操作系统连接,确保生产系统安全。
5、业务连续性的容错、容灾架构考量
容灾 容错架构都是基于业务的可靠性和服务可用性,以及应对各种故障并能快速响应的可操控性去考虑和设计的,容灾IDC要保证业务服务的连续性以及数据的可用性,因此在平台前后端均有所考虑。
在同一数据中心之内,应对影像标准应用与非标准应用服务器硬件故障或应用程序BUG导致无法对上层业务系统提供影像接口服务,或是需要主动停止进行应用程序升级或故障维护,都可以通过负载均衡设备实现多活,以及调用均衡策略控制;若发生IDC级别的灾难,则容灾负载均衡及应用服务器会无缝接管业务。
ES的多副本分布式集群架构,天然带有容错属性,集群内5节点组成的ES索引服务器集群,为元数据的高效数据访问与搜索,集群将元数据以分片形式分布于各个节点,配合多副本保存,容许单节点或双节点的故障前提下,仍可提供服务。那么以5节点ES集群分片数量为10(s0~s9),双份数据副本的配置为例,演示分片和节点故障的容错情况。
单分片故障的场景,另外的副本对外提供数据服务,待故障分片清理后,数据将由正常副本向清理副本同步,恢复集群分片状态。
类似单节点故障,导致节点内所有分片不可用,整个集群服务仍然可用,保证s0-s9分片对外服务正常,节点故障恢复或重新部署后,启动ES服务,分片副本将进行同步恢复集群状态。
具体的配置策略与副本数,会根据承载渠道和业务重要性和访问速度要求,进行合理配比。ES集群中元数据在本地备份至专用NAS设备和带库以外,还会通过消息队列(Kafka)将两中心的元数据准实时同步至对端数据中心,相应的非结构化数据也会在容灾中心保留一份,形成对等的数据容灾架构。
非结构化数据存储的同城容灾实现方式是:在线区高性能SSD NAS依靠SnapMirror技术,提供数据高可用性和快速数据复制服务,通过专用数据传输LAN网络,实现同城容灾中心NAS设备的高速数据复制,并不断更新数据,保持最新且能随时满足使用需求。
容灾NAS可选择任意时间点进行快照恢复,提供零数据丢失同步复制 (RPO=0)方案,保护最关键的在线区存调业务文件,并利用精简复制数据流创建容灾数据保护,降低数据复制网络带宽利用率;近线区GFS存储则在主备IDC各搭建一套,一方面承载在线区的下移数据,另一方面对于低失效调阅要求的业务系统的直接调阅,平台会通过分布式消息队列将调阅任务同步至对端影像应用服务,实现非结构化数据文件的准实时容灾存储,当一侧GFS近线存储发生灾难故障短时间内无法恢复,则主备中心可快速切换至对侧GFS提供对业务的数据服务;离线区的物理带库的归档数据,在归档之前会由前端虚拟带库完成容灾端的异步复制,进而在容灾端实现归档的异地磁介质永久备份。
6、业务访问量监控与效果
非结 构化数据服务平台的监控,主要通过对各部分服务进程和业务端口的监视,和对负载模式下的服务健康检查端口的通断操作实现业务通道开启关闭的控制这两部分共同完成。
- 主要服务进程的状态监视与验证判断
- 主要业务端口的状态监视
配合上述业务监视方法在监控系统中的合理频率配置以及值机人员对业务通道开关信号的标准化快速控制,实现“监”与“控”的闭环。
以非结构化数据服务平台中影像文件读写数量和读写耗时为例,非工作日平均万笔影像文件读写量之下,平均写入耗时可维持在150毫秒以内,那么由于批量包下载调阅的情况存在,读取平均耗时会被拉高,但也保持在平均250毫秒之内,能够较好的满足当前十几套业务系统的存调需求。
文末
从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。
个人将这段时间所学的知识,分为三个阶段:
第一阶段:HTML&CSS&JavaScript基础
第二阶段:移动端开发技术
第三阶段:前端常用框架
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。