
好些人在筹备全栈面试之际,耗费了诸多时间在盲目地刷题之上,然而到了面试之时,当被问及前端跨域、后端接口以及数据库索引这些内容时,依旧无法给出答案。这样一种缺乏效率的准备途径,不但白白浪费了时间,而且还挫伤了信心。
要说全栈工程师,并非是要求你在每个领域都摇身一变成为专家,而是得掌握前端、或者后端、亦或是数据库、还有部署这四条链路的核心技术,并且能够独立自主地完成一个项目从需求起始一直到上线的全部流程。其核心要点在于一专多能,也就是得有一个强项突出,而其他各个环节也都能够攻克拿下。
具体职责涵盖两个方面,其一为前端工作,其负责页面开发,负责组件封装,负责用户交互实现,负责页面性能优化,以此来保证用户体验的流畅;其二乃后端工作,其负责接口开发,负责业务逻辑实现,负责接口权限验证,负责异常情况处理,借此确保系统的稳定运行。

浏览器之所以出现前端请求后端接口遭拦截,是因跨域,跨域乃同源策略所引发的限制,若协议、域名或者端口不同,便会被拦截。面试官问及此问题,目的在于考察你是否切实处理过跨域场景,而非单纯背诵概念。
常用解决方案具备3种,头一种即属代理服务器,于开发环境借助Webpack Dev Server设配代理,又或者于生产环境借Nginx实施反向代理,将前端请求传递至后端服务器方,进而得以绕开跨域局限。第二种则是JSONP,凭借script标签不存在跨域约束的原理去请求接口,然而仅支持GET请求,适宜用于兼容老旧低版本浏览器的项目。首先,存在着第三种情况,它属于后端接口转发。接着,这种方式会促使后端服务器去对另一个后端服务发起请求。然后,前端仅仅请求自身的后端。如此一来,前端便不存在跨域问题了。
索引最为关键的作用在于加快数据库进行查询的速度,以此减少查询期间的磁盘I/O操作。当不存在索引之时,MySQL需要逐行去扫描整张表,一旦数据量增大,性能便会极其迅速地下降。索引还能够起到对数据予以约束的作用,举例来说,唯一索引能够确保数据具备唯一性。

有三种常见的索引类型,唯一索引确保索引列的值唯一且允许有空值,一张表能够有多个唯一索引,适宜存放像手机号这种不能重复的字段。普通索引是最为基础的索引类型,并没有唯一性约束,纯粹是用来加快查询速度。联合索引是经由多个字段组合而成的索引,遵循最左前缀原则,查询时一定要匹配左侧字段方可用上索引。
好多候选人仅仅会书写代码,却讲不明白整个项目自零至一的整个流程,面试官询问这个问题,是想要瞧瞧你有没有独立承担项目的能力,整个流程划分成需求分析、技术选型、架构设计、全链路开发、测试优化、部署上线、迭代维护这七个步骤。
首先去和产品经理进行对接工作,从而使得核心需求以及用户场景得以被明确,进而对功能模块展开梳理,还要去确认开发范围以及时间节点。接着依据需求来挑选技术栈,像前端采用React,后端运用Node.js,数据库选用MySQL,部署借助Docker。然后开展项目架构的设计工作,对接口规范以及代码规范予以约定,同时设计数据库表结构。随后先着手开发后端接口,做好调试以及异常处理工作,之后再去展开前端页面的开发,完成组件封装以及接口对接。最后自己进行单元测试、接口测试以及页面适配测试,对所发现的bug实施修复。采用Docker完成用于容器化部署的第六步,对Nginx进行反向代理的配置,上线后持续监管系统运行状况。依据业务需要开展持续迭代的第七步,对性能实施优化措施,并定期开展数据备份操作。
线上出现程序错误状况之时,乃是对具备全面技术能力工程师能力考验最为严峻之际。面试考官提出这个问题,目的在于查看你排查思绪是否明晰 ,能否迅速确定问题所在。核心排除检查流程分为四个步骤:确定问题之所在 ,剖析产生原因 ,处理解决问题 ,回顾并加以改进优化。

一开始借助前端控制台日志、后端接口日志、数据库日志以及监控工具,去明确 bug 出现的场景与触发条件。接着依据定位成果逐步展开排查,前端方面查看组件渲染以及接口请求,后端方面查看接口逻辑以及缓存,数据库方面查看 SQL 语句以及索引是否失效。随后针对问题根源迅速进行修复,像是修改前端组件逻辑或者优化后端接口,测试无误之后上线。最后复盘 bug 出现的缘由,优化代码规范以及测试流程,增添单元测试以及接口测试,防止同类问题再度出现。
众多候选人耗费大量时间用于背诵八股文,然而面试官真正所看重的乃是你是否具备解决实际问题的能力。在此给予你建议,将重点置于三个方向,其一为理解每个技术点的核心原理以及使用场景,其二为能够清晰阐述自身所做过的项目流程以及所遭遇的具体问题,其三为拥有排查线上问题的实战经验。
此外,在进行面试之际,切不可仅仅背诵答案,而是得结合实际所参与的项目来进行举例说明。倘若被问到跨域相关问题,那就阐述一下在你所负责的项目当中,究竟是怎样通过配置代理获得解决的。要是被问到索引相关情况,那就讲述一下你针对哪一张表添加了索引,以及在添加索引之后查询速度获得了怎样程度的提升。要是被问到流程相关内容,那就借助自己所参与的项目从头到尾串联一遍从需求起始直至上线的一整个完整过程。
当你将这篇文章读完之后,在着手迎接全栈面试之际,你最为头疼的究竟是哪一个技术方面的环节呢?欢迎于评论区域留言,将你的困惑予以分享,同时也千万不要忘记去点赞,并转发给那些同样正处于准备面试阶段的朋友哦。