-
计数排序是一种非比较排序算法,其核心是通过统计每个数值的出现次数并利用前缀和实现稳定排序,时间复杂度为O(n+k),空间复杂度为O(n+k),其中n为元素个数,k为数据范围;它仅适用于非负整数且k较小的场景,不适用于浮点数、字符串或负数,否则需额外映射;其稳定性通过从原始数组末尾逆序遍历并结合前缀和数组实现,确保相同元素的相对位置不变;常见变体包括作为基数排序的子过程,用于按位排序大范围整数;当k远大于n时,该算法在时间和空间上开销巨大,因此虽在特定场景高效,但通用性差,是一种牺牲通用性换取效率的专有排序
-
CSS过渡性能瓶颈在于重排重绘,width/height/top/left等布局属性易触发;应优先使用transform和opacity等GPU加速属性,并避免强制同步布局。
-
transition适用于一次性交互状态变化,需明确起止样式;animation适合循环或复杂时序,支持关键帧与播放控制;二者可协同但同属性不叠加,性能上transition在transform/opacity更优。
-
根本原因是box-sizing:content-box导致padding和border额外增加宽度;应全局设box-sizing:border-box,图片加max-width:100%;height:auto;,断点依内容临界点选em单位,字体用clamp()动态缩放。
-
同源时可直接操作iframe.contentWindow,跨域时必须用postMessage通信;需确保iframe加载完成、严格校验origin,否则触发安全错误。
-
没有“最适合”的JS框架,只有最匹配项目需求、团队能力与维护预期的那一个:React生态广但需自组织,Vue上手快且TS支持稳,Svelte包小但生态弱;选型看开发效率、性能、生态;简单场景用原生JS更优。
-
I/O阶段是事件循环中负责收集已完成异步I/O操作回调并放入执行队列的机制,它不执行I/O而是接收操作系统通知;2.它确保程序非阻塞运行,像调度员一样让主线程持续处理任务而不被外部资源等待卡住;3.非阻塞I/O是其基础,操作系统通过epoll/kqueue等机制通知事件循环哪些I/O已就绪;4.优化方式包括:用异步API替代同步、合并小I/O操作、使用流式处理大文件、限制并发I/O数量、合理利用缓存减少重复读写,最终提升应用响应速度和资源效率。
-
position:sticky的top值需设为具体长度(如0、20px),表示元素距其最近滚动祖先顶部的距离开始吸附;若无效,主因是祖先未设overflow-y:auto/scroll且有明确高度。
-
WebSocket连接三步:构造函数创建、监听事件、send发送;长轮询靠客户端递归请求模拟实时;核心区别是全双工长连接vs单向HTTP“假连接”;选型依延迟与交互频率而定。
-
JavaScript原型链是对象间通过[[Prototype]]形成的属性查找路径,核心在于查找不到时向上级原型查找,终点为null;Object.create()可手动构建原型链,class只是语法糖,引用类型属性共享是常见陷阱。
-
IE8–IE9无法识别HTML5语义标签,需用html5shiv通过document.createElement()注册标签并修复样式;同时需降级querySelector、addEventListener等API,并对localStorage和表单校验做兼容处理。
-
微博网页版m.weibo.cn不提供特别关注功能,因其自2021年底已下线该功能,API移除is_top字段,前端无对应DOM,且服务端关闭所有外部调用权限,仅App支持。
-
<p>关键在于监听dragover事件并调用event.preventDefault();再通过event.clientY与target.getBoundingClientRect()计算offset=event.clientY-rect.top,若offset小于高度一半则为上方,否则为下方。</p>
-
可使用innerHTML、textContent或模板字符串动态更新HTML中JavaScript变量值:innerHTML支持HTML解析但有XSS风险;textContent仅输出纯文本更安全;模板字符串适合多变量嵌入且结构清晰。
-
最常见的原因是未设置content属性或其值为空;必须显式声明content(如""或Unicode字符),并确保字体加载、display和定位正确。