Skip to content
On this page

自我介绍

面试官你好,我是来自东莞理工学院的一名应届毕业生,我学习前端大概一年多的时间,在这期间也跟团队小伙伴一起参加过一些程序设计比赛。之前寒假的时候参加过字节的青训营,做的是一个图表可视化的平台,获得“最具挑战奖”。

我比较熟悉的技术栈是vue3全家桶。在学习过程中,我也会注重知识的积累,也会坚持记录学习的笔记,学习过程中也会写一些demo来验证学习到的内容,来方便自己更好的巩固知识;内容都放在了github上。

目前对开源逐渐的萌发兴趣,接下来,也想努力的来参与开源建设,来融入很好的这个开源氛围中。

选一个项目难点,讲讲你是怎么解决的。

比如就前不久实现的一个功能吧,就是让我博客中的代码可以是实现执行或者预览。其实这个功能一直想做当没有去做。

一开始我尝试用像codepen类似的第三方平台去通过嵌入代码的方式去实现,因为md文件最后也会被渲染层html代码嘛,这个方案是可行的,但是我发现它加载很慢,这效果不是很满意。

后面以为学习了一点编译解析的思路,我就想尝试去实践一下。先是实现js的执行,我能想到的就是借助eval或者new function的方式去动态执行代码。

为什么使用new Function,因为eval执行的作用域的当前作用域,而new Function是全局作用域,更符合我们的要求。

然后我需要拿到源代码,我就是写了一个组件,将源代码作为它的孩子结点(文本),这样子我可以在组件内拿到。出现一个问题,换行的问题,于是我用到了pre标签,这样子我可以拿到保留原格式的代码,实现了动态执行的功能。

对于html呢,我首先想到的是得对样式以及代码的执行做隔离,所以我用iframe来实现,通过动态的插入style等标签,以及使用innerHTML来实现。

为什么会选择vue?有什么优势?

如果放在一年前刚接触前端的时间,其实当时只知道vue,不知道react,当时学习的视野还比较狭窄

现在的话,我选择vue的原因有如下

  • 有虚拟DOM,可以通过diff算法实现最小化更新,提升更新的性能;另外,有了虚拟DOM可以实现跨平台
  • 颗粒级别到组件级别,也就是当数据改变时,只有依赖了该数据的组件才会更新视图,而react的更新默认是整棵树,即使子组件没改变也重新更新,需要开发者手动去指定逻辑。
  • composition API,针对不同场景的API设计,文档详细,开箱即用;基于HTML的模板,上手成本低。
  • 生态丰富活跃
  • 我觉得vue的设计上是非常优秀的,在vuejs设计与实现书中说,vue的实现是权衡的艺术,在寻找性能和可维护性的平衡点,为什么vue会那么好用,因为它给开发者提供的是声明式的代码,而内部封装了命令式代码,这样做虽然会损失一定的性能,但仍然能提供过得去的性能,因为内部也做了很多的优化,把性能损失降到最低。

平时怎么学习

  • 学习的内容
    • 书籍、掘金小册、极客时间、周刊的文章
  • 学习的时间
    • 工作外的其他时间吧,每天基本都会在电脑前,除了一些给自己休息,调节的时间
    • 利用碎片化的时间,比如坐地铁,地铁上看完一章,回到家后就会先靠自己的记忆,去把demo写一下,然后再结合原文去整理知识。不过还是存在说过了段时间后会遗忘,就只能多去回顾,或者在项目中多实践,自然会记得,所以我还是会比较希望自己学的内容可以在项目中用起来。

怎么理解前端的发展

  • 在互联网早期阶段,传统的开发模式中,往往是把前端的网页代码和后端的程序代码混合在一起,借助某种模板技术(如 JSPASPPHP)来在服务器端动态生成 HTML 页面。

在这种开发模式下,网页的每次改动都需要前后端人员共同参与才能完成,**网站前后端的开发人员需要很大的沟通成本、协调成本。**企业招人的时候,也不得不招一些既懂前端又懂后端程序员,来减少前后端开发人员的冲突。

这种模式是非常低效的。

现在流行的前后端分离的开发模式,就是让后端只负责给前端提供数据,由前端负责整个页面的模板渲染、数据填充以及交互逻辑。后面就有了前端框架,像vue、react等前端视图框架。

  • 另外还出现了前端路由,好处是用户体验更好,不需要刷新网页,问题就是会降低SEO,需要取决于使用场景,对于官网之类的会使用SSR技术,来提升SEO

为什么选择前端

从小热爱美术,喜欢设计,希望设计自己的页面或者项目,对前端的热情更高,直观的看到成果。

另外就是在这个过程中,让我对它不断的会有吸引力。大一下学期有个契机,在一个师兄的引导下,开始前端的学习,后面不断的给自己设定目标,比如大二进团队的暑假,就给团队开发了记账的小程序,后面自己不断的学一些前端相关的内容,到后面想去看书,看源码,自己独立开发项目,不断的越学越深。

用一个词分别概括一下优点和缺点

  • 执行力比较强
    • 对于自己的东西,比如github、博客等,想做什么会付诸实践,同时去做记录笔记,或者用思维导图去梳理知识。也会去写一些demo,书中的代码,也会倾向于手动写一遍
    • 团队合作中,我不一定会做领头,但我会争取做那个完成度最好的人,同时我会想了解接触其他部分的一个实现思路,提高对项目的整体把握。
  • 还不够有远见,决策力还不够
    • 我觉得一方面是自己的经验有限,视野还不够开阔
    • 另一方面自己可能性格原因,有时候会不够果断,但我也有一直的改善这一点
      • 比如去担任一些学生干部,
      • 提高自己分析和解决问题的能力,让自己去多经历一些事情,让自己的经验和看问题的角度更加丰富。

未来有什么规划

  • 我希望在最开始的的几年,可以深耕某个领域研究和学习,同时逐步补各方面的能力和理解,比如产品方面,设计方面等,自己对于设计方面也是比较感兴趣的,平时也会看一些国外设计网站上的一些作品,提高自己审美能力
  • 我之前了解到我们公司目前的相关业务的内容,我也是有很大的兴趣和期待能参与到其中学习,希望可以跟团队共进步,在提升自己能力的同时,也能和其他的前辈和小伙伴去开发更多优秀的项目,来为公司创造更多的利益。

MIT Licensed | Copyright © 2021 - 2022