专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

干货:2020Web前端面试题及答案汇总

ins518 2024-09-22 11:35:41 技术文章 44 ℃ 0 评论

iscroll安卓低版本卡顿,如何解决?

方案一:iScroll v5.1.3 设置momentum: true

方案二:配置probeType

方案三:开启硬件加速:给scroll元素增加css样式:一webkit一transform:translate3d(0,0,0);

方案四:判断手机版系统版本,应用原生CSS: overflow:scroll

常见的搜索算法有哪几种?

广度优先搜索(BFS)

深度优先搜索(DFS)

爬山法(Hill Climbing)

最佳优先算法(Best-first search strategy)

回溯法 (Backtracking)

分支限界算法(Branch-and-bound Search Algorithm)

什么是深度搜索?

如算法名称那样,深度优先搜索所遵循的搜索策略是尽可能“深”地搜索树。它的基本思想是:为了求得问题的解,先选择某一种可能情况向前(子结点)探索,在探索过程中,一旦发现原来的选择不符合要求,就回溯至父亲结点重新选择另一结点,继续向前探索,如此反复进行,直至求得最优解。深度优先搜索的实现方式可以采用递归或者栈来实现。由此可见,把通常问题转化为树的问题是至关重要的一步,完成了树的转换基本完成了问题求解。

(1)减少节点数,思想:尽可能减少生成的节点数;

(2)定制回溯边界,思想:定制回溯边界条件,剪掉不可能得到最优解的子树;

在很多情况下,我们已经找到了一组比较好的解。但是计算机仍然会义无返顾地去搜索比更“劣”的其他解,搜索到后也只能回溯。为了避免出现这种情况,我们需要灵活地去定制回溯搜索的边界。

在深度优先搜索的过程当中,往往有很多走不通的“死路”。假如我们把这些“死路”排除在外,不是可以节省很多的时间吗?打一个比方,前面有一个路径,别人已经提示:“这是死路,肯定不通”,而你的程序仍然很“执着”地要继续朝这个方向走,走到头来才发现,别人的提示是正确的。这样,浪费了很多的时间。针对这种情况,我们可以把“死路”给标记一下不走,就可以得到更高的搜索效率。

什么是广度优先搜索?

类似树的按层遍历,其过程为:首先访问初始点Vi,并将其标记为已访问过,接着访问Vi的所有未被访问过可到达的邻接点Vi1、Vi2……Vit,并均标记为已访问过,然后再按照Vi1、Vi2……Vit的次序,访问每一个顶点的所有未被访问过的邻接点,并均标记为已访问过,依此类推,直到图中所有和初始点Vi有路径相通的顶点都被访问过为止。

对于状态数很多时,广度优先搜索可以采用循环队列或动态链表来处理。

什么是爬山法(Hill Climbing)?

DFS的变形,不同的是每次选择的是最优的一个子结点,即局部最优解;

例如,对于8数码问题,设置一个函数表示放错位置的数目,每次选择子结点中放错最少的结点;

步骤:

1.建立一个栈,将根结点放入栈

2.判断栈顶元素是否是目标结点,如果是,算法结束,如果不是,进入第三步

3.栈顶元素出栈,根据评估函数计算的顺序将此结点的子结点入栈

4.如果栈空,则输出失败,否则,进入第二步

以上就是小科今天整理提供的Web前端开发面试题,希望为Web前端同学提供了有用的面试素材,以后小科每日均会提供Python及Web相关的习题。学习没有捷径,希望大家都能少走一些弯路,顺利找到工作!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表