0%

秋招流年不利,于是发奋刷算法题,春招时来运转,拿到了字节跳动的前端Offer。准备面试阶段,将去年所有前端面经的题目所涉及到的知识点作了一遍梳理。实践证明,面试问题确实没有超出相关知识点范围,权作参考吧!

阅读全文 »

算法题目刷了小半年,对于记忆化搜索的灵活运用还是力有不逮。使用记忆化搜索的目的是为乐减少重复搜索,其对于降低搜索的时间复杂度具有十分明显的作用,属于典型的“空间换时间”。今天遇到一道题目,刚好比较合理地结合了递归与记忆化搜索。

阅读全文 »

今天做了一道2020腾讯校招技术笔试题目,难度不大,但同样容易诱导我们写出TLE的代码。为了优化时间复杂度,我们可以借助双向扫描来降低程序步数。对于双向扫描,顾名思义,以一维数组为例,从左到右遍历数组内部元素,我们视为一次单向扫描,那么,双向扫描即意味着从左到右遍历元素,而后从右到左遍历元素。如何借助双向扫描来降低时间复杂度呢?我们从一道题目开始:

阅读全文 »

对我来说,Google Kick Start 就是一条充满荆棘的山路,无处不在的WATLE整得人简直没脾气。接下来一段时间,我打算在这条路上好好走上一走,四处看看,与TLE斗争到底。一般来说,TLE发生的原因即在于时间复杂度过高,需要想办法优化代码,其中一个思路是借助堆的应用,之前的也有文章提到,本文从一道更难的题目入手,一起来看看如何借助堆优化时间复杂度。

阅读全文 »

在学习C++的过程中,经常会遇到一个场景,发现一个新的小知识点,希望借助代码进行验证。这时,基于MacOS环境,直观的做法是打开Xcode或者CLion创建新的C++项目。然而,这不免给人一种不够轻巧的感觉。经过一阵摸索,发现借助Visual Studio CodeCMake,能够十分方便地完成源代码构建,故而在此记录一下。

阅读全文 »

针对数据结构中的堆(Heap),素来比较陌生,也不知道该如何使用。今天来理一理的概念。堆(Heap)又称优先队列(Priority Queue),其内部元素并非按照一般的“先进先出”原则,而是按照优先级取出元素。此外,堆又可分为大根堆与小根堆。为了更清晰地了解堆的使用,来看一道算法题:

阅读全文 »

当我们使用Laravel框架开发网站时,需要编译JavaScript及SASS以实现我们的网页设计。通常情况下,前端JavaScript代码位于下述路径:

1
/resources/assets/js/app.js

对于规模比较小的项目,我们可以直接在app.js中加入我们的JavaScript代码,无论基于什么前端框架。然而,随着项目规模逐渐增大,代码量越来越多,对代码进行模块化显得愈发重要(当然,这也是一个很好的编码习惯,最好从项目开始,就有这样的意识)。

阅读全文 »

有限状态机(Finite-State Machine, FSM)表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。状态机可归纳为4个要素,即现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。

阅读全文 »

狭义的贪心算法指的是解最优化问题的一种特殊方法,解决过程中总是做出当下最好的选择,因为具有最优子结构的特点,局部最优解可以得到全局最优解;这种贪心算法是动态规划的一种特例。能用贪心解决的问题,也可以用动态规划解决。

阅读全文 »