返回
前端面试题24连,手写/场景/排序题高频
前端
2024-01-20 15:10:54
前端面试中,手写、场景和排序题目常常出现,考察开发者的基本功和解决问题的能力。本文精选了24道高频面试题,逐一解析,帮助应聘者做好准备。
手写题
-
绑定事件?
事件代理:使用addEventListener方法将事件监听器附加到父元素上,当子元素触发事件时,父元素会捕获并处理该事件。
-
通用绑定事件?
使用DOM0级事件处理程序,如onclick,onmouseover等,将事件监听器直接附加到元素上。
-
判断一个DOM元素是不是符合一个CSS选择器?
使用matches方法或querySelector方法。
-
画一个三角形?
使用CSS或Canvas。
-
实现简易的ajax?
使用XMLHttpRequest对象。
-
实现new操作符?
function newOperator(ctor, ...args) { // 创建一个新对象 const obj = Object.create(ctor.prototype); // 调用构造函数 ctor.apply(obj, args); // 返回新对象 return obj; }
-
实现promise.all?
function promiseAll(promises) { return new Promise((resolve, reject) => { const results = []; let completed = 0; promises.forEach((p, i) => { p.then(res => { results[i] = res; completed++; if (completed === promises.length) { resolve(results); } }).catch(err => { reject(err); }); }); }); }
场景题
-
如何实现一个简单的双向数据绑定?
-
如何优化一个大型列表的渲染性能?
-
如何处理跨域请求?
-
如何调试一个复杂的前端应用程序?
-
如何设计一个可重用的组件库?
-
如何实现一个拖拽功能?
-
如何实现一个响应式布局?
排序题
-
给定一个无序数组,如何找到最大的k个元素?
-
给定一个链表,如何反转它?
-
给定一个二叉树,如何计算它的深度?
-
给定一个字符串,如何判断它是回文串?
-
给定一个数组,如何找到重复出现的元素?
-
给定两个排序数组,如何合并它们?
-
给定一个无序数组,如何找到它的中位数?
-
给定一个字符串,如何判断它是否是由数字组成?
-
给定一个字符串,如何判断它是否是一个有效的JSON字符串?
-
给定一个数组,如何判断它是否是一个有效的IP地址?