常见前端面试问答
序
本文是Daniel在GitHub上总结的一个常见的前端采访问题。很多问题都很好,经典,有代表性。上面没有答案,所以我整理了一下,从网上找到了一些相关问题的答案。我还没有研究过一些问题的答案。很多答案来源于网络,可能有遗漏供大家参考。(还有一些问题没有整理出来,可以自己搜索答案。)
1.你能描述一下逐渐增强和优雅退化的区别吗?
优雅降级:网站在所有新浏览器中正常工作。如果用户使用旧浏览器,代码将检查它们是否正常工作。由于IE盒子模型独特的布局问题,针对不同版本IE的hack已经练就了优雅的降级,为不能支持功能的浏览器增加候选方案,让它们在旧浏览器上可以以某种形式体验降级而不至于完全失败。
渐进式增强:从所有浏览器都支持的基本功能开始,逐步添加那些只有新浏览器才支持的功能,并在页面中添加对基本浏览器无害的附加样式和功能。当浏览器支持时,它们会自动出现并发挥作用。
2.线程和进程的区别
一个程序至少有一个进程,一个进程至少有一个线程。线程的分区规模小于进程的分区规模,使得多线程程序的并发性很高。
此外,进程在执行过程中有独立的内存单元,多个线程共享内存,大大提高了程序的运行效率。
线程在执行过程中不同于进程。每个独立的线程都有一个程序运行入口、一个顺序执行序列和一个程序出口。但是线程不能独立执行,所以必须存在于应用中,应用提供多线程执行控制。
从逻辑的角度来看,多线程的意义在于一个应用程序中可以同时执行多个执行部分。然而,操作系统并没有将多线程视为多个独立的应用来实现进程调度、管理和资源分配。这就是进程和线程的重要区别。
3.说说你对语义学的理解?
1:当页面被移除或者样式丢失时,可以使页面呈现出清晰的结构:html本身没有表达出来。我们可以看到,比如h1是加粗的,字号是2em,而且是加粗的;强就是大胆,所以不要以为是html的表达。这些其实都是html默认的css样式,所以当样式被去掉或者丢失的时候,可以让页面呈现出清晰的结构,这并不是语义html结构的优势。但是浏览器都有默认样式,默认样式的目的是为了更好的表达HTML的语义。可以说浏览器的默认样式离不开语义HTML结构。2.屏幕阅读器(如果访问者有视觉障碍)将根据您的标签“阅读”您的网页。3.PDA、手机等设备可能无法像普通电脑的浏览器那样呈现网页(通常是因为这些设备对CSS的支持比较弱)。4.有利于SEO:与搜索引擎建立良好的沟通有助于爬虫抓取更有效的信息:爬虫依靠标签来确定上下文和每个关键词的权重。6.方便团队开发维护,语义可读性更强,是下一页的重要趋势。遵循W3C标准的团队都遵循这个标准,这样可以减少差异。
4.你如何优化网站的文档和资源?
预期的解决方案包括:文件合并、文件最小化/文件压缩、使用CDN托管缓存(多个域名提供缓存)等。
5.为什么用多个域名提供网站资源更有效?
1.cdn缓存更方便。2.突破浏览器并发限制(一般每个域名建立的链接不超过6个)。3.无cookieless,节省带宽,尤其是上行带宽一般比下行带宽慢。4.将UGC内容与主站隔离,防止不必要的安全问题(上传js从主站窃取cookie等)。).正是因为这个原因,用户内容的域名必须是完全独立的第三方域名,而不是自己主站的子域名。5.数据被分割,甚至被切割成不同的物理簇,因此更容易通过子域分发数据。这个可能用的不多。
在PS:中,关于Cookie,带宽是次要的,安全隔离是主要的。至于多个域名,越多越好。虽然服务器可以做通用解释,但是浏览器做dns解释需要时间,域名太多。如果你想通过https,你需要购买更多的证书并部署它们。
6.请说出三种减少页面加载时间的方法。(装载时间指感知时间或实际装载时间)
1.优化图片2。选择图像格式(GIF:它提供的颜色较少,可以在一些对颜色要求不高的地方使用)3。优化css(压缩和合并CSS,如上边距、左边距.) 4.在网站地址后添加一个斜杠(如www.campr.com/目录),这将决定这个目录是什么文件类型或目录。) 5.标明高度和宽度(如果浏览器找不到这两个参数,需要在下载图片时计算尺寸。图片多的话,浏览器需要不断调整页面。这不仅影响速度,还会影响浏览体验。当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,也会在页面上腾出图片的空间,然后继续加载以下内容。因此加载时间更快,浏览体验更好。) 6.减少http请求(合并文件和图片)。
7.如果你参与了一个项目,发现他们使用制表符来缩进代码,但是你喜欢空格,你会