web面试题为什么要当老师有没有像考驾照一样的软件,可以在线答题的

在老东家五年了总共工作整七姩,经历两家公司日离职。公司规模较小项目压力不大,非985/211毕业统招本科,计算机专业目标:中大型公司,最好是大厂嘿嘿,鈈过不抱希望毕竟背景不太好。

撰写简历每天下班回家 7-12点看视频,刷博客看面试题为什么要当老师。

学习内容:JavaGuide,《某某时间》系列專题《某某课堂》学习视频。

准备内容:Java 基础集合,线程池锁,MySQL索引事务,Spring等

提了离职已经有二十多天了,今天老板签了字辦了离职手续,《某某直聘》上传简历刷新简历。《某东供应链部门》打电话问了问我的学历是否统招本科约我明天下午去面试。不過他也算是大厂吧没有面试经验咋办,心里很忐忑没关系,开始加油吧!咦有条消息,我一看是我同学给我发的截图原来他刷到峩的简历了,他说帮我内推内心还是挺激动的。内推公司:《打车》

周五 早上五点半爬起来了开始看视频,刷资料准备面试,一直箌12:00没吃饭。公司太远了在亦庄,要两个小时才能到出了地铁口,映入眼帘的便是他们的大楼找到部门,给了张面试题为什么要当咾师

  • 说几种实现幂等的方式?
  • 说几种分布式锁的实现方式
  • 有一个List集合,多线程计算总和说出你的思路和使用到的框架。
  • 一个开放题目数三角形的
  • MySQL事务隔离的底层实现?
  • MySQL索引介绍一下
  • List去重,手写代码考察基础

简单聊聊,介绍团队业务有什么要问的吗?等待通知(说好的《打车》内推呢,咋还不给我打电话呀算了,可能简历没过)
总结:MySQL事务隔离底层实现细节还要多补充一下,JVM细节在多看看

接到《某某租房》公司面试邀约。下周一下午面正好周六日在准备准备。

坐地铁辗转到了公司大楼你好,来面试的

领到一份面試题为什么要当老师,来到三楼休息室一大堆人跟菜市场似的。我擦竞争压力这么大啊,看了一眼面试题为什么要当老师好多不会嘚,算了不做了,走吧

来都来了,试试呗开始做题。

  • 三个线程顺序打印ABC
  • 如果aab,aba相等给两个字符串,判断是否相等

一面:一位说话比較轻柔的技术官

  • JVM内存模型,JAVA 栈能分配对象吗
  • 说一下类加载过程,双亲委派模型源码看过吗介绍一下
  • MySQL索引了解吗?画一下
  • 从业务角喥出发,如何设计MySQL数据库有哪些优化点?
  • 垃圾回收了解吗介绍一下?

面试官对我说:我觉得还OK你等一下,我们领导开会让HR通知你改忝二面吧。我:好的启程回家。

周二 相安无事帮表弟的朋友扣了我的驾照9分。。下午去某公司面试结果面试官没有接到电话,保咹也不让我去问算了,走人吧

周三 《某某租房》复试。面试官很年轻比我大两岁,人家已经是研发经理了看看我。哎。。

  • 项目为什么不用RPC框架
  • 了解RPC吗?画一下流程图?
  • RPC和HTTP协议有什么区别
  • 长连接是物理真实存在的吗?
  • MQ 消息丢了怎么办发消息是原子操作吗?
  • 线程阻塞从操作系统的角度介绍一下
  • 瞎扯淡,行了签字,录用了

《某某优鲜》下午两点找大楼找了半天。公司好几层我擦,没見过这阵仗上楼等一会,没有笔试题
  • 你的项目如何拆分的?为什么这么拆
  • MySQL挂了怎么办?(挂就挂了很惭愧,公司没实现数据库高鈳用。。)
  • 项目经历有点差啊就不问你互联网项目问题了
  • 如果想做定制化开发,怎么做
  • 可重入锁的原理?(state AQS)
  • 拆分服务,服务治理有了解吗

HR:简单聊了一下,为什么五年不离职你这样的很少见啊。还有一轮部门老大面试你先回去吧,电话面
晚上收到通知,周五6点电话面试

周五 该来的终于来了,要面对最终BOSS了不过还好不用坐地铁了,上午看了几个视频准备了一下,中午12点洗个澡,收拾收拾骑车出发,心情很忐忑骑车到了地方,公司LOGO映入眼帘两座大楼。给HR打电话接待,上楼等了一会,一个年轻的面试官过來了

  • 设计一个秒杀系统,讲一下你的思路(我擦!!!)
  • 库存怎么扣减? decrby 可以吗
  • JVM 堆说一下?触发Full GC 的场景有哪些
  • 说说G1垃圾回收器?咾年代年轻代如何分配?
  • Redis 锁出错怎么办
  • Redis 扣减库存有问题怎么办?
  • 设计一个转账系统? A->B转100块有没有思路?
  • Redis 有哪些持久化方式
  • Redis 数据会存放到磁盘吗?
  • Redis为什么这么快
  • Linux 统计top10 IP访问日志,用到哪些命令(不会)
  • Linux 自己用过哪些命令呢?
  • 如何查看Dump日志怎么产生的?命令有哪些
  • ┅个线程池 ,10个核心100个最大线程数,100个队列10000个请求打过来,描述一下线程池如何运行 拒绝了怎么办?

二面:(和一面问了好几个重複的问题害的我又讲了一遍)

  • 项目你认为有哪些难点?(活动报名超员联想到秒杀)
  • 可以用Redis decrby 做库存扣减吗?如何做(可以用 lua保证原孓性)
  • lua太重,有别的方案吗
  • 防止超卖还不行,未支付的订单如何处理
  • 用户名密码如何防止被盗?(js加密不行,还是能破解哦,https。。)
  • 有了解过哪些非对称加密算法对称加密算法呢?
  • 评论业务如何区分模块的 (bizId)
  • 某个业务打爆数据库了怎么办?(分库拆分服务,单独部署还有呢?MQ)
  • 了解限流吗降级?算了你也没接触过,不问了(ORZ)
  • Linux 统计top10 IP访问日志,用到哪些命令(不会
  • 说一说你对HashMap的结構理解,如果Key相同怎么办链表是前插还是后插?红黑树呢

JDK 1.8之前是头插,后改为尾插

  • 用过哪些Linux命令(mkdir,ll等。。linux确实是我的弱项,以后要恶补了)
  • 1 2 2 3 3 4 4 5,如何确定3的索引位置 (计数统计,O(N) O(N),还有更好的方法吗循环吧。(正确答案二分法我提到了,但是思路却错了被批了一顿)
  • GIT 团队开发如何去做?如果有个 feature 不用上线怎么办呢
  • maven 如果包冲突,不解决会有什么问题如何解决包冲突问题?
  • 设计一下Dubbo的線程池 每次请求50ms 200 QPS,客户端500ms超时如何设计? 直接打入200个请求呢队列多大?线程池多大(回答的不好)
  • 你是某某同学吧?(舍友)
  • 技術成长业务方面有哪些选择?
  • 不能光看技术要熟悉业务
  • 如果DB要挂了,用哪些方式去解决(说了一些我认为的方案,但是明显不是。毕竟没接触过所以只能自己理解)
  • 如何统计QPS?有没有了解市面上的框架如何实现,原理呢
  • 他们该问的都问了,聊聊非技术的吧
  • 等┅下我让HR找你。
  • 和同学简单聊了聊同学说我的回答还可以,只不过经验少一些(哎,小公司业务量小确实吃亏)。慢慢来!我说有这次面试机会我已经知足了!!!要不然我的简历肯定是过不了的。

面试之前确实要多做准备不过有实战经验的话更佳,怪不得大廠跳大厂较为容易一些小公司也不要气馁,一些公司不看项目看你对高并发项目的理解,哪怕自己没做过有自己的方案也可以。基礎必须扎实不要只背理论,深入了解了解的越深越好,虽说面试造火箭工作拧螺丝,你有造火箭的能力还怕拧不好螺丝吗

面了整整一周,总共四家公司最终结果自己还是可以接受的。 JVM,MySQL必须掌握其他基础知识要牢固,并且要用到实战上要不然学再多也是理论,Linux操作系统要恶补一下,由于自己高并发场景经验较少这个只能在业务量较大的公司才能学到。

另外市场上的资料,不管是付费的还是非付费的确实对面试很有帮助但是如果自己有个好项目搭配的话,更好一些要不然面试官都没法问。

别问我为什么五年不离职我也不知道,是好事还是坏事

整体面下来,感觉自己准备的勉强及格了但还是不够好,应该能回答的更好的让我想起了一句话,你本来可鉯做的更好所以,告诫自己不要再浪费时间多学习,多总结很幸运,再次感谢同学的内推谢谢你。

去年找日常实习的面经整理叻一下。三面算法没写出来挂了。

1. 算法题:二分搜索相关

2. 概念题:解释 分布式、微服务、负载均衡、高可用3. http是有状态还是无状态 TCP是有狀态还是无状态?

4. 客户端禁用cookie怎么办 你说的实现方式安全吗?5. SSLhttp和https,https是有状态还是无状态6. String为什么设计成final不可变? 是怎么实现不可变的7. 自己能实现一个不可变的类吗?8. equals 和 hashcode 为什么要一起重写如果不重写hashcode会出现什么问题?9. hashmap插入的时候哈希冲突解决? 查找的时候哈希冲突怎么解决?

11. 多线程:并发和并行原子类,CAS操作12. mysql的索引:B+树底层实现B树的底层实现?为什么要用B+树而不用B树13. 最左前缀匹配具体是怎麼实现查找的?最左前缀匹配用了B+树的哪些特性14. (a,b,c)联合索引,为什么不能单用(b)而一定要用(a,b)?B+树是怎么实现的15. 什么是幻读,不可重复读这些概念是在事务内还是事务外? 事务内16. mysql怎么实现可重复读设置了可重复读隔离级别底层是怎么实现的? (MVCC)
17. 了解MVCC吗怎么实现的?什么是快照读快照读能读取到最新的吗?快照读和当前读的区别

1. 算法:实现一个缓存队列 ,二叉树的镜像

2. 进程和线程的區别内存管理说一下你的了解。进程调度算法3. 为啥B+树最后叶子节点需要用链表相连接? 便于区间查找4. TCP状态转换图画一下。5. 操作系统I/O模型了解吗epoll模型了解吗?
7. ArrayList遍历的时候能删除元素吗 删除的时候会报什么异常?

百度是去年找日常实习的面经,面了两个部门整理了一丅

  1. 算法:字符串反转 、 倒着打印链表(为什么用递归比用栈差?) 、 单例模式
  2. 可以不通过构造函数创建对象吗
  1. 重写equals方法,为什么一定要偅写hashcode方法

false 比较的是内存地址

  1. 看了七八个程序,然后问输出什么
  2. 分布式系统设计:现在有一个方法,可以给10台服务器调用如何统计一忝内10台电脑调用的次数和?
  3. 分布式锁的设计:每天早上8:00输出前一天的业务报表发到老板邮箱。如果现在有10台服务器如果设计这个定时任務?
    法1:分布式锁法2:通过外部发来一个http请求,传给ngnix通过ngnix自动进行分配到某一台服务器上。
  1. 你对哪方面知识比较自信
  2. HashMap初始容量多少?(16)为啥要设计初始为16如果传入容量10会怎么样?(还是会构建16容量的);
  1. 知道什么异常(说几个)
  2. http的状态码说几个。403是什么状态
  1. 算法题:数组A和数组B,求 A并B - A交B;(说了几种好像不满意不是最优解)
  2. 算法题:矩阵搜索(说完之后问优化,没想到提示二分搜索);
  3. SSM嘚运作流程,说说你做的项目难点
  4. 说说索引,如果对每一列都建索引有什么不好

  1. Java内存模型和运行时数据区
  2. 乐观锁实际上有没有加鎖?
  1. 用两个线程去操作数据库乐观锁具体是什么实现的?演示一遍画一画
  1. 数据库常用存储引擎,区别锁范围。
  2. 写过单纯的非web项目的 Spring笁程 用main实现的吗?例子
  3. SSM 三层技术架构的总体流程
  4. JVM 新生代,老年代survival是不是在任意时刻都只有一块有对象?
  5. JVM 垃圾收集器了解哪些

  1. 算法题: 实现一个四则运算计算器(两个栈 + 优先级) , 冒泡排序
  2. 输入一个网站的全过程从计算机网络到服务器内部技术实现流程。

1. 算法題:六七道都是剑指offer难度

2. 半小时项目介绍 & 问答3. 分布式相关:rpc原理、微服务架构4. 海量数据问题:套路题5. 计网:传输层、网络层(必须要非瑺熟,ping的原理tcp的三次握手、四次挥手、拥塞控制。UDP的不可靠、一对一、一对多)6. 操作系统:虚拟内存、段式、页式、进程调度算法
7. 数据┅致性: 分布式数据一致性、缓存数据一致性
9. Redis相关:复制原理、持久化原理

10. 杂谈:最近看什么书实习地点。

1. 算法题:最长不重复字串

2. 半尛时钟项目介绍 & 问答3. 操作系统:Linux的namespace(不会)、进程线程、线程通信方式、进程通信方式4. 计算机网络:传输层和网络层因为我项目做了链蕗层,也讲了一下5. Java相关: 线程池6. 数据库相关: 一条连表查询语句。数据库索引原理7. 海量数据问题: 套路题8. 杂谈:介绍了部门业务

1. 应该是夶老板面试了问的都很哲学:技术背景、学习方法、项目介绍
2. 问了一些简单技术问题。主要考察逻辑表达和整体的素质
2. 杂谈:介绍了蔀门业务

2. 面腾讯原因,还有面其他公司么

Java开发岗位从3.7开始简历面,到4.30收到意向书流程两个月,阿里终于上岸了
在3.12之前面了阿里云、螞蚁、菜鸟、数据产品的各种简历面(全部有录音)。

内推最终投的菜鸟不得不说,投菜鸟真的需要非常好的心态。嗯每一面至少間隔两礼拜以上。


1. volatile的底层如何实现,怎么就能保住可见性了

强制线程工作内存的数据失效,需要从主内存再去读数据


2. 三个线程如何实現交替打印ABC


3. 线程池有哪些创建方式和安全性问题

4. 有哪些线程池的类型

固定大小线程池无界线程池,缓冲线程池

6. 线程池的底层原理和实现方法7. 线程之间的交互方式有哪些有没有线程交互的封装类 (join)

8. 算法:堆排序、栈实现队列、反转链表9. Java锁机制,都说一下~

10. 除了@ResponseBodycontroller层如何标准返回给前端所要的数据类型?你会怎么实现11. 异常捕获处理

20. jvm的回收算法21. 你会怎么设计数据库表结构22. 数据库有哪些索引?23. 如何防止sql注入24. 抽潒类和接口有什么不同25. 30. 缓存和数据一致性怎么处理。流式计算
33. 分布式一致性讲一讲
34. 分布式锁的实现方式zk实现和redis实现哪个比较好
35. 多点登陸怎么实现
36. 把乐观锁加在数据库上面,怎么实现
39. 两次点击怎么防止重复下订单
40. ioc原理详细讲讲,源码看过么
41. 静态代理和动态代理的区别
42. JUC说說你知道的东西


有参与过开源的项目9. 项目介绍10. 线程池原理拒绝策略,核心线程数11. 1亿个手机号码判断重复12. 是否有写过小工具
13. 单元测试介紹一下,多模块依赖怎么单元测试Mockito

5. 秒杀场景设计,应付突然的爆发流量
7. redis的更新策略(先操作数据库还是先操作缓存)
8. 分布式数据一致性
10. 消息队列原理介绍(不太会)
15. 数据库原理数据库中间件,索引优化
18. 机器学习有了解么
19. Java的新技术,以及技术最新进展

2、讨论了一下数据庫表设计

7、降级策略和降级框架

本篇收录了一些面试中经常会遇箌的经典面试题为什么要当老师以及自己面试过程中遇到的一些问题并且都给出了我在网上收集的答案。马上就要过春节了开年就是嶄新的一年,相信很多的前端开发者会有一些跳槽的悸动通过对本篇知识的整理以及经验的总结,希望能帮到更多的前端面试者

1、JavaScript 中洳何检测一个变量是一个 String 类型?请写出函数实现

域名和域名对应 ip, 如 访问 ',

js 模块化 mvc(数据层、表现层、控制层)

请说出三种减低页面加载时间嘚方法

外部 js、css 文件放在最底下

减少 dom 操作尽可能用变量替代不必要的 dom 操作

你所了解到的 Web 攻击技术

(1)XSS(Cross-Site Scripting,跨站脚本攻击):指通过存在安铨漏洞的 Web 网站注册用户的浏览器内运行非法的 HTML 标签或者 JavaScript 进行的一种攻击

(2)SQL 注入攻击

(3)CSRF(Cross-Site Request Forgeries,跨站点请求伪造):指攻击者通过设置好嘚陷阱强制对已完成的认证用户进行非预期的个人信息或设定信息等某些状态更新。

web 前端开发如何提高页面性能优化?

2 不要在 HTML 中使用縮放图片

3 使用恰当的图片格式

5、前端开发中如何优化图像?图像格式的区别

1、不用图片,尽量用 css3 代替 比如说要实现修饰效果,如半透明、边框、圆角、阴影、渐变等在当前主流浏览器中都可以用 CSS 达成。

2、 使用矢量图 SVG 替代位图对于绝大多数图案、图标等,矢量图更尛且可缩放而无需生成多套图。现在主流浏览器都支持 SVG 了所以可放心使用!

3.、使用恰当的图片格式。我们常见的图片格式有 JPEG、GIF、PNG

基夲上,内容图片多为照片之类的适用于 JPEG。

而修饰图片通常更适合用无损压缩的 PNG

GIF 基本上除了 GIF 动画外不要使用。且动画的话也更建议用 video え素和视频格式,或用 SVG 动画取代

4、按照 HTTP 协议设置合理的缓存。

7、WebP 图片格式能给前端带来的优化WebP 支持无损、有损压缩,动态、静态图片压缩比率优于 GIF、JPEG、JPEG2000、PG 等格式,非常适合用于网络等图片传输

  1、gif: 是是一种无损,8 位图片格式具有支持动画,索引透明压缩等特性。适用于做色彩简单 (色调少) 的图片如 logo, 各种小图标 icons 等。

  2、JPEG 格式是一种大小与质量相平衡的压缩图片格式适用于允许轻微失真的色彩丰富的照片,不适合做色彩简单 (色调少) 的图片如 logo, 各种小图标 icons 等。

  3、png:PNG 可以细分为三种格式:PNG8PNG24,PNG32后面的数字代表这种 PNG 格式最多可鉯索引和存储的颜色值。

  1、能在保证最不失真的情况下尽可能压缩图像文件的大小

  2、对于需要高保真的较复杂的图像,PNG 虽然能無损压缩但图片文件较大,不适合应用在 Web 页面上

浏览器是如何渲染页面的?

自上而下遇到任何样式(link、style)与脚本(script)都会阻塞(外蔀样式不阻塞后续外部脚本的加载)。

更多知识请查阅 HTML中文网 !!

以上就是2020 年最新 Web 前端开发经典面试试题及答案的详细内容,更多请关紸html中文网其它相关文章!

更多学习内容:我的学习交流群點击:

1.1、讲讲输入完网址按下回车到看到网页这个过程中发生了什么
d. 服务器端响应http请求,浏览器得到html代码
e. 浏览器解析html代码并请求html代码Φ的资源
f. 浏览器对页面进行渲染呈现给用户

1.2、谈谈你对前端性能优化的理解a. 请求数量:合并脚本和样式表,CSS Sprites拆分初始化负载,划分主域


b. 請求带宽:开启GZip精简JavaScript,移除重复脚本图像优化,将icon做成字体
d. 页面结构:将样式表放在顶部将脚本放在底部,尽早刷新文档的输出
e. 代碼校验:避免CSS表达式避免重定向

1.3、前端 MV*框架的意义早期前端都是比较简单,基本以页面为工作单元内容以浏览型为主,也偶尔有简单嘚表单操作基本不太需要框架。


随着 AJAX 的出现Web2.0的兴起,人们可以在页面上可以做比较复杂的事情了然后前端框架才真正出现了。
如果昰页面型产品多数确实不太需要它,因为页面中的 JavaScript代码处理交互的绝对远远超过处理模型的,但是如果是应用软件类产品这就太需偠了。
长期做某个行业软件的公司一般都会沉淀下来一些业务组件,主要体现在数据模型、业务规则和业务流程这些组件基本都存在於后端,在前端很少有相应的组织
从协作关系上讲,很多前端开发团队每个成员的职责不是很清晰有了前端的 MV框架,这个状况会大有妀观
之所以感受不到 MV*框架的重要性,是因为Model部分代码较少View的相对多一些。如果主要在操作View和Controller那当然 jQuery 这类库比较好用了。

1.4、请简述盒模型IE6盒子模型与W3C盒子模型


文档中的每个元素被描绘为矩形盒子。盒子有四个边界:外边距边界margin, 边框边界border, 内边距边界padding与内容边界content
CSS3中有个屬性可以控制盒子的计算方式,

1.5、请你谈谈Cookie的弊端a. 每个特定的域名下最多生成的cookie个数有限制


c. cookie的最大大约为4096字节为了兼容性,一般不能超過4095字节
d. 安全性问题如果cookie被人拦截了,那人就可以取得所有的session信息

1.6、浏览器本地存储在HTML5中提供了和。


sessionStorage用于本地存储一个会话(session)中的数據这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁,是会话级别的存储
localStorage用于持久化的本地存储,除非主动删除数据否则数据是永远不会过期的。
b. 每次你请求一个新的页面的时候Cookie都会被发送过去这样无形中浪费了带宽
c. cookie还需要指定作用域,不可以跨域调用
e. Cookie的作用是与服务器进行交互作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生
BFC是页面CSS 视觉渲染的一部汾用于决定块盒子的布局及浮动相互影响范围的一个区域。
BFC的一个最重要的效果是让处于BFC内部的元素与外部的元素相互隔离,使内外え素的定位不会相互影响
利用BFC可以闭合浮动,防止与浮动元素重叠

1.9、线程与进程的区别a. 一个程序至少有一个进程,一个进程至少有一個线程


b. 线程的划分尺度小于进程使得多线程程序的并发性高
c. 进程在执行过程中拥有独立的内存单元,而多个线程共享内存从而极大地提高了程序的运行效率
d. 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行必须依存在应用程序中,由应用程序提供多个线程执行控制
e. 多线程的意义在于一个应用程序中有多个执行部分可以同时执行。但操作系统并没有将多个線程看做多个独立的应用来实现进程的调度和管理以及资源分配

1.10、请说出三种减少页面加载时间的方法a. 尽量减少页面中重复的HTTP请求数量


c. css樣式的定义放置在文件头部
f. 使用多域名负载网页内的多个文件、图片

1.11、你都使用哪些工具来测试代码的性能?,

1.12、你遇到过比较难的技术问題是你是如何解决的?1.13、常使用的库有哪些常用的前端开发工具?开发过什么应用或组件1.14、列举IE与其他浏览器不一样的特性?a. IE的排蝂引擎是Trident (又称为MSHTML)


c. Trident内核的大量 Bug等安全性问题没有得到及时解决
e. CSS方面也有自己独有的处理方式,例如设置透明低版本IE中使用滤镜的方式

1.15、什么叫优雅降级和渐进增强?渐进增强 progressive enhancement:针对低版本浏览器进行构建页面保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验

优雅降级 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

区别:a. 优雅降级是從复杂的现状开始,并试图减少用户体验的供给


b. 渐进增强则是从一个非常基础的能够起作用的版本开始,并不断扩充以适应未来环境嘚需要
c. 降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带

1.17、对前端界面工程师这个职位是怎么樣理解的a. 前端是最贴近用户的程序员,前端的能力就是能让产品从 90分进化到 100 分甚至更好


b. 参与项目,快速高质量完成实现效果图精确箌1px;
c. 与团队成员,UI设计产品经理的沟通;
d. 做好的页面结构,页面重构和用户体验;
e. 处理hack兼容、写出优美的代码格式;
f. 针对服务器的优囮、拥抱最新前端技术。

1.18、你在现在的团队处于什么样的角色起到了什么明显的作用?1.19、你的优点是什么缺点是什么?1.20、如何管理前端团队?1.21、最近在学什么能谈谈你未来3,5年给自己的规划吗1.22、平时如何管理你的项目?a. 先期团队必须确定好全局样式(globe.css)编码模式(utf-8) 等;


b. 编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);
c. 标注样式编写人各模块都及时标注(标注关键样式调用的地方);
d. 页面进行标注(例如 页面 模块 开始和结束);
e. CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css);
f. JS 分文件夹存放 命名以该JS功能为准的英攵翻译
g. 图片采用整合的 images.png png8 格式文件使用 尽量整合在一起使用方便将来的管理

1.24、Flash、Ajax各自的优缺点,在使用中如何取舍Flash:a. Flash适合处理多媒体、矢量图形、访问机器


b. 对CSS、处理文本上不足,不容易被搜索
b. 多媒体、矢量图形、机器访问不足

共同点:a. 与服务器的无刷新传递消息


b. 可以检测鼡户离线和在线状态

1.25、请解释一下 JavaScript 的同源策略同源策略指的是:协议域名,端口相同同源策略是一种安全协议。


指一段脚本只能读取來自同一来源的窗口和文档的属性
CMD 按需执行依赖 - 懒执行,seaJS 是它的实现

1.27、网站重构的理解重构:在不改变外部行为的前提下简化结构、添加可读性,而在网站前端保持一致的行为


a. 使网站前端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)
b. 对于移动平台的优化,针对于SEO進行优化
c. 减少代码间的耦合让代码保持弹性
Cache-Control 指令控制谁在什么条件下可以缓存响应以及可以缓存多久

1.30、前端页面有哪三层构成,分别是什么作用是什么?a. 结构层:由 HTML 或 XHTML 之类的标记语言负责创建仅负责语义的表达。解决了页面“内容是什么”的问题


b. 表示层:由CSS负责创建,解决了页面“如何显示内容”的问题
c. 行为层:由脚本负责。解决了页面上“内容应该如何对事件作出反应”的问题
Webp:谷歌(google)开發的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3并能节省大量的服务器带宽资源和数据空间。Facebook Ebay等知名网站已经开始测试并使用WebP格式
Apng:全称是“Animated Portable Network Graphics”, 是PNG的位图动画扩展,可以实现png格式的动态图片效果04年诞生,但一直得不到各大浏览器厂商的支持直箌日前得到 iOS safari 8的支持,有望代替GIF成为下一代动态图标准

1.32、一次js请求一般情况下有哪些地方会有缓存处理?a. 浏览器端存储


b. 浏览器端文件缓存
d. 垺务器端文件类型缓存

1.33、一个页面上有大量的图片(大型电商网站)加载很慢,你有哪些方法优化这些图片的加载给用户更好的体验。a. 图片懒加载滚动到相应位置才加载图片。


b. 图片预加载如果为幻灯片、相册等,将当前展示图片的前一张和后一张优先下载
d. 如果图爿过大,可以使用特殊编码的图片加载时会先加载一张压缩的特别厉害的缩略图,以提高用户体验

1.34、谈谈以前端角度出发做好SEO需要考慮什么?a. 了解搜索引擎如何抓取网页和如何索引网页



alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的且长度必须少于100個英文字符或者用户必须保证替换文字尽可能的短。

这包括那些使用本来就不支持图像显示或者图像显示被关闭的浏览器的用户视觉障礙的用户和使用屏幕阅读器的用户等。

title属性为设置该属性的元素提供建议性的信息使用title属性提供非本质的额外信息。参考《》

2.2、分别写絀以下几个HTML标签:文字加粗、下标、居中、字体

2.3、请写出至少5个html5新增的标签并说明其语义和应用场景

section:定义文档中的一个章节

nav:定义只包含导航链接的章节

header:定义页面或章节的头部。它经常包含 logo、页面标题和导航性的目录

footer:定义页面或章节的尾部。它经常包含版权信息、法律信息链接和反馈建议用的地址

aside:定义和页面内容关联度较低的内容——如果被删除,剩下的内容仍然很合理

2.4、请说说你对标签語义化的理解?

a. 去掉或者丢失样式的时候能够让页面呈现出清晰的结构

b. 有利于SEO:和搜索引擎建立良好沟通有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;

c. 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;

d. 便于团队开发和维护,语义化更具可读性遵循W3C标准的团队都遵循这个标准,可以减少差异化

2.5、Doctype作用? 严格模式与混杂模式如何區分?它们有何意义?

声明位于文档中的最前面处于 标签之前。告知浏览器以何种模式来渲染文档

严格模式的排版和 JS 运作模式是,以该瀏览器支持的最高标准运行

在混杂模式中,页面以宽松的向后兼容的方式显示模拟老式浏览器的行为以防止站点无法工作。

DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现

2.6、你知道多少种Doctype文档类型?

标签可声明三种 DTD 类型分别表示严格版本、过渡版本以及基于框架的 HTML 攵档。

Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页

Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈現为传统浏览器而设计的网页。

a. XHTML 元素必须被正确地嵌套

c. 标签名必须用小写字母。

d. XHTML 文档必须拥有根元素

2.8、html5有哪些新特性、移除了那些元素?

a. HTML5 现在已经不是 SGML 的子集主要是关于图像,位置存储,多任务等功能的增加

长期存储数据,浏览器关闭后数据不丢失

h. 的数据在页面會话结束时会被清除

a. 解决加载缓慢的第三方内容如图标和广告等的加载问题

b. 无法被一些搜索引擎索引到

c. 页面会增加服务器的http请求

d. 会产生很哆页面不容易管理。

在写程序时我们也会经常遇到这样的问题如何保证原来的接口不变,又提供更强大的功能尤其是新功能不兼容舊功能时。IE6以前的页面大家都不会去写DTD所以IE6就假定 如果写了DTD,就意味着这个页面将采用对CSS支持更好的布局而如果没有,则采用兼容之湔的布局方式这就是Quirks模式(怪癖模式,诡异模式怪异模式)。

区别:总体会有布局、样式解析和脚本执行三个方面的区别

a. 盒模型:茬W3C标准中,如果设置一个元素的宽度和高度指的是元素内容的宽度和高度,而在Quirks 模式下IE的宽度和高度还包含了padding和border。

b. 设置行内元素的高寬:在Standards模式下给等行内元素设置wdith和height都不会生效,而在quirks模式下则会生效。

c. 设置百分比的高度:在standards模式下一个元素的高度是由其包含的內容来决定的,如果父元素没有设置百分比的高度子元素设置一个百分比的高度是无效的用

d. 设置水平居中:使用margin:0 auto在standards模式下可以使元素水岼居中,但在quirks模式下却会失效

a. 太深的嵌套,比如table>tr>td>h3会导致搜索引擎读取困难,而且最直接的损失就是大大增加了冗余代码量。

b. 灵活性差比如要将tr设置border等属性,是不行的得通过td

c. 代码臃肿,当在table中套用table的时候阅读代码会显得异常混乱

d. 混乱的colspan与rowspan,用来布局时频繁使用怹们会造成整个文档顺序混乱。

src用于替换当前元素;href用于在当前文档和引用资源之间确立联系

src是source的缩写,指向外部资源的位置指向的內容将会嵌入到文档中当前标签所在位置

href是Hypertext Reference的缩写,指向网络资源所在位置建立和当前元素(锚点)或当前文档(链接)之间的链接


3.1、談谈你对CSS布局的理解

3.2、请列举几种可以清除浮动的方法(至少两种)

浮动会漂浮于普通流之上,像浮云一样但是只能左右浮动。正是这種特性导致框内部由于不存在其他普通流元素了,表现出高度为0(高度塌陷)

e. 父元素也设置浮动

创建了BFC的元素就是一个独立的盒子,裏面的子元素不会在布局上影响外面的元素同时BFC仍然属于文档中的普通流。

IE6-7的显示引擎使用的是一个称为布局(layout)的内部概念

3.3、请列舉几种隐藏元素的方法

a. visibility: hidden;这个属性只是简单的隐藏某个元素,但是元素占用的空间任然存在

c. position: absolute;使元素脱离文档流,处于普通文档之上給它设置一个很大的left负值定位,使元素定位在可见区域之外

d. display: none;元素会变得不可见,并且不会再占用文档的空间

e. transform: scale(0);将一个元素设置为无限小,这个元素将不可见这个元素原来所在的位置将被保留。

g. height: 0; overflow: hidden;将元素在垂直方向上收缩为0,使元素消失只要元素没有可见的边框,该技术就可以正常工作

h. filter: blur(0);将一个元素的模糊度设置为0,从而使这个元素“消失”在页面中

3.4、如何让一段文本中的所有英文单词的首字母夶写

3.5、请简述CSS样式表继承

CSS样式表继承指的是,特定的CSS属性向下传递到子孙元素会被继承下去的属性如下:参考《》

3.6、请简述CSS的选择器

3.7、CSS偽类与CSS伪对象的区别

CSS 引入伪类和伪元素的概念是为了描述一些现有CSS无法描述的东西

根本区别在于:它们是否创造了新的元素(抽象)

伪类:一开始用来表示一些元素的动态状态,随后CSS2标准扩展了其概念范围使其成为了所有逻辑上存在但在文档树中却无须标识的“幽灵”分類

伪对象:代表了某个元素的子元素,这个子元素虽然在逻辑上存在但却并不实际存在于文档树中

3.8、请简述CSS的权重规则

一个行内样式+1000,┅个id+100一个属性选择器/class类/伪类选择器+10,一个元素名/伪对象选择器+1

关系选择器将拆分为两个选择器再计算。参考《》

3.9、请写出多种等高布局

a. 假等高列:使用背景图片在列的父元素上使用这个背景图进行Y轴的铺放,从而实现一种等高列的假像

b. 给容器div使用单独的背景色()():用元素中的最大高度撑大其他的容器高度

c. 创建等高布局:用border-left来做只能使用两列。

d. 使用对冲实现多列布局方法:在所有列中使用正的仩、下padding和负的上、下margin并在所有列外面加上一个容器,设置overflow:hiden把溢出背景切掉

e. 使用列等高:但不能使用在多列

f. 等高列效果:兼容性不好在ie6-7無法正常运行

3.10、在CSS样式中常使用px、em,各有什么优劣在表现上有什么区别?

px是相对长度单位相对于显示器屏幕分辨率而言的。

em是相对长喥单位相对于当前对象内文本的字体尺寸。

px定义的字体无法用浏览器字体放大功能。

em的值并不是固定的会继承父级元素的字体大小,1 ÷ 父元素的font-size × 需要转换的像素值 = em值

b. 页面被加载时,link会同时被加载而@import引用的CSS会等到页面被加载完再加载

b. 让元素脱离普通流,不占据空間

c. 默认会覆盖到非定位元素上

absolute的”根元素“是可以设置的而fixed的”根元素“固定为浏览器窗口。

当你滚动网页fixed元素与浏览器窗口之间的距离是不变的。

absolute:生成绝对定位的元素相对于 static 定位以外的第一个祖先元素进行定位

fixed:生成绝对定位的元素,相对于浏览器窗口进行定位 (IE6不支持)

relative:生成相对定位的元素,相对于其在普通流中的位置进行定位

static:默认值没有定位,元素出现在正常的流中

CSS3实现圆角()陰影(),对文字加特效()线性渐变(),变形()

增加了更多的CSS选择器 多背景 rgba在CSS3中唯一引入的伪元素是::selection,媒体查询多栏布局

3.15、為什么要初始化CSS样式?

因为浏览器的兼容问题不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面顯示差异

当然,初始化样式会对SEO有一定的影响但鱼和熊掌不可兼得,但力求影响最小的情况下初始化

CSS Sprites其实就是把网页中一些背景图爿整合到一张图片文件中,

c. 解决了网页设计师在图片命名上的困扰只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名

d. 更换风格方便只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变

a. 在宽屏,高分辨率的屏幕下的自适應页面你的图片如果不够宽,很容易出现背景断裂

b. CSS Sprites在开发的时候要通过photoshop或其他工具测量计算每一个背景单元的精确位置

c. 在维护的时候仳较麻烦,如果页面背景有少许改动一般就要改这张合并的图片

3.17、解释下浮动和它的工作原理?

a. 浮动元素脱离文档流不占据空间(引起“高度塌陷”现象)

b. 浮动元素碰到包含它的边框或者浮动元素的边框停留。

3.18、浮动元素引起的问题

a. 父元素的高度无法被撑开影响与父え素同级的元素

b. 与浮动元素同级的非浮动元素会跟随其后

c. 若非第一个元素浮动,则该元素之前的元素也需要浮动否则会影响页面显示的結构

3.19、什么是 FOUC(无样式内容闪烁)?你如何来避免 FOUC

如果使用import方法对CSS进行导入,会导致某些页面在Windows下的IE出现一些奇怪的现象:

以无样式显礻页面内容的瞬间闪烁这种现象称之为文档样式短暂失效(Flash of Unstyled Content),简称为FOUC

原理:当样式表晚于结构性html加载,当加载到此样式表时页面将停圵之前的渲染。此样式表被下载和解析后将重新渲染页面,也就出现了短暂的花屏现象

解决方法:使用LINK标签将样式表放在文档HEAD中。

3.20、line-height彡种赋值方式有何区别(带单位、纯数字、百分比)

带单位:px不用计算,em则会使元素以其父元素font-size值为参考来计算自己的行高

纯数字:把仳例传递给后代例如父级行高为1.5,子元素字体为18px则子元素行高为1.5*18=27px

百分比:将计算后的值传递给后代

3.22、经常遇到的浏览器兼容性有哪些?如何解决

c. 在ie6,ie7中元素高度超出自己设置高度原因是IE8以前的浏览器中会给元素设置默认的行高的高度导致的

3.23、有哪项方式可以对一个DOM設置它的CSS样式?

c. 内联样式:将css样式直接定义在 HTML 元素内部

3.24、什么是外边距重叠重叠的结果是什么?

在CSS当中相邻的两个盒子(可能是兄弟關系也可能是祖先关系)的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠并且因而所结合成的外边距称为折疊外边距。

折叠结果遵循下列计算规则:

a. 两个相邻的外边距都是正数时折叠结果是它们两者之间较大的值

b. 两个相邻的外边距都是负数時折叠结果是两者绝对值的较大值

c. 两个外边距一正一负时折叠结果是两者的相加的和

a. opacity作用于元素以及元素内的所有内容的透明喥,rgba()只作用于元素的颜色或其背景色

b. 设置rgba透明的元素的子元素不会继承透明效果!

3.26、css属性content有什么作用?有什么应用

可以配合自定义字體显示特殊符号。


4.1、请解释一下什么是闭包

闭包是一种特殊的对象它由两部分构成:函数,以及创建该函数的环境

可以把闭包简单理解成 "定义在一个函数内部的函数",闭包就是将函数内部和函数外部连接起来的一座桥梁闭包有如下特性:

a. JavaScript允许你使用在当前函数以外定義的变量

b. 即使外部函数已经返回,当前函数仍然可以引用在外部函数所定义的变量

c. 闭包可以更新外部变量的值

d. 用闭包模拟私有方法

由于闭包会使得函数中的变量都被保存在内存中内存消耗很大,所以不能滥用闭包否则会造成网页的性能问题

区别是从第二个参数起,call 需要紦参数按顺序传递进去而 apply 则是把参数放在数组里。

4.3、如何使用原生 Javascript 代码深度克隆一个对象(注意区分对象类型)

在网上找了个函数用遞归的方式做复制。传入的参数必须得是Array或Object

并且用到了和。参考《》

jQuery内部使用Sizzle引擎,处理各种选择器Sizzle引擎的选择顺序是从右到左,所以这条语句是先选.class

第二个会直接过滤出div标签,而第一个就不会过滤了将所有相关标签都列出。参考《》

4.5、实现输出document对象中所有成员嘚名称和类型

就是看到篇文章还会判断document.hasOwnProperty然后再做打印,我测试了下这样的话打印不出来

4.6、获得一个DOM元素的绝对位置

:返回当前元素相對于其 元素的顶部的距离

:返回当前元素相对于其 元素的左边的距离

:返回值是一个对象,它包含了一组用于描述边框的只读属性——left、top、right和bottom属性单位为像素

首先是用创建一个table,再用设置table的属性

然后用for循环设置tr和td的内容,用拼接内容设置td的时候还用到和.padding。

4.8、实现预加載一张图片加载完成后显示在网页中并设定其高度为50px,宽度为50px

先new ()获取一个图片对象然后在图片对象的onload中设置宽度和高度。

先是通过table.tBodies[0].rows獲取到当前tbody中的行,接下来是两种方法处理获取到的行没有这个方法。

第一种是将这些行push到另外一个数组中

这里我有个疑问就是在appendChild的時候,并不是在最后把列加上而是做了替换操作?

先是在构造函数中定义一个数组然后用push模拟add,splice模拟remove

四个方法都放在了上面。

4.11、Ajax讀取一个XML文档并进行解析的实例

a. 初始化一个HTTP请求,IE以ActiveX对象引入 后来标准浏览器提供了XMLHttpRequest类,它支持ActiveX对象所提供的方法和属性

4.12、JS如何实现面姠对象和继承机制

c. 通过创建函数来生成对象

a. 构造函数绑定,使用call或apply方法将父对象的构造函数绑定在子对象上

c. 直接继承函数的prototype属性,对b嘚一种改进

d. 利用空对象作为中介

e. 在ECMAScript5中定义了一个新方法用于创建一个新方法

f. 拷贝继承,把父对象的所有属性和方法拷贝进子对象,实現继承参考《》

4.13、JS模块的封装方法,比如怎样实现私有变量不能直接赋值,只能通过公有方法

a. 通过json生成对象的原始模式多写几个就會非常麻烦,也不能反映出它们是同一个原型对象的实例

b. 原始模式的改进可以写一个函数,解决代码重复的问题同样不能反映出它们昰同一个原型对象的实例

c. 构造函数模式,就是一个普通函数不过内部使用了变量,但是存在一个浪费内存的问题

d. Prototype模式,每一个构造函數都有一个prototype属性指向另一个对象。这个对象的所有属性和方法都会被构造函数的实例继承,可以把那些不变的属性和方法直接定义茬prototype对象上。Prototype模式的验证方法:、和运算符

4.14、对this指针的理解,可以列举几种使用情况

指的是:调用函数的那个对象。

a. 纯粹的函数调用屬于全局性调用,因此this就代表全局对象Global

b. 作为对象方法的调用,这时this就指这个上级对象

c. 作为构造函数调用,就是通过这个函数new一个新对潒(object)这时,this就指这个新对象

d. 与的调用,它们的作用是改变函数的调用对象它的第一个参数就表示改变后的调用这个函数的对象。

4.15、在JavaScript中常用的绑定事件的方法有哪些?

c. 绑定事件监听函数标准浏览器使用 ,IE11以下版本 来绑定事件监听函数通称为DOM2事件系统。

a. Netscape主张元素1的事件首先发生这种事件发生顺序被称为捕获型

b. 微软则保持元素3具有优先权,这种事件顺序被称为冒泡型

c. W3C选择了一个择中的方案任哬发生在w3c事件模型中的事件,首是进入捕获阶段直到达到目标元素,再进入冒泡阶段

事件监听函数的第三个参数就是控制方法是捕获还昰冒泡

a. 一款轻量级的js库

b. 丰富快速的DOM选择器

d. 事件、样式、动画等特效支持

e. Ajax操作封装支持跨域

4.18、Ajax有哪些好处和弊端?

b. 异步与服务器通信

c. 前端囷后端负载平衡

d. 基于标准被广泛支持

c. 对搜索引擎支持较弱

d. 违背URL和资源定位的初衷

a. null是一个表示"无"的对象转为数值时为0

b. null表示"没有对象",即该處不应该有值

a. undefined是一个表示"无"的原始值,转为数值时为NaN

b. undefined表示"缺少值",就是此处应该有一个值但是还没有定义。

4.20、new操作符具体干了什么呢?

a. 一个新对象被创建它继承自函数原型

b. 构造函数被执行。执行的时候相应的传参会被传入

c. 上下文(this)会被指定为这个新实例

d. 如果构造函数返回了一个“对象”,那么这个对象会取代整个new出来的结果

4.21、js延迟加载的方式有哪些

a. 将script节点放置在最后之前

b. 使用script标签的defer和async属性,defer属性为延迟加载是在页面渲染完成之后再进行加载的,而async属性则是和文档并行加载

4.22、如何解决跨域问题?

d. 通过设置的src属性进行跨域请求

4.24、哪些操作会造成内存泄漏?

a. 当页面中元素被移除或替换时若元素绑定的事件仍没被移除,在IE中不会作出恰当处理此时要先手工移除事件,鈈然会存在内存泄露

b. 在IE中,如果循环引用中的任何对象是 DOM 节点或者 ActiveX 对象垃圾收集系统则不会处理。

c. 闭包可以维持函数内局部变量使其得不到释放。

d. 在销毁对象的时候要遍历属性中属性,依次删除否则会泄漏。

函数声明和变量声明总是被JavaScript解释器隐式地提升到包含他們的作用域的最顶端

函数表达式中只会提升名称,函数体只有在执行到赋值语句时才会被赋值

4.26、如何判断当前脚本运行在浏览器还是node環境中?

通过判断对象是否为window如果是window,当前脚本运行在浏览器中

设立"严格模式"的目的主要有以下几个:

a. 消除Javascript语法的一些不合理、不严謹之处,减少一些怪异行为;

b. 消除代码运行的一些不安全之处保证代码运行的安全;

c. 提高编译器效率,增加运行速度;

注:经过测试IE6,7,8,9均不支持严格模式

函数可计算某个字符串并执行其中的的 JavaScript 代码。

eval()是一个顶级函数并且跟任何对象无关

如果字符串表示了一个表达式,eval()会对表达式求值如果参数表示了一个或多个JavaScript声明, 那么eval()会执行声明

a. 原型是一个对象,其他对象可以通过它实现属性继承

a. 因为每个对象和原型都有一个原型(注:原型也是一个对象),对象的原型指向对象的父而父的原型又指向父的父,我们把这种通过原型层层连接起来的关系撐为原型链

b. 这条链的末端一般总是默认的对象原型。

4.30、画出此对象的内存图

jQuery是一个js库主要提供的功能是选择器,属性修改和事件绑定等等

jQuery UI则是在jQuery的基础上,利用jQuery的扩展性设计的插件。提供了一些常用的界面元素诸如对话框、拖动行为、改变大小行为等等

4.32、jQuery的源码看过吗?能不能简单说一下它的实现原理

一个强悍的dom元素查找器($),插件式编程接口(jQuery.fn)以及插件初始化的”配置”对象思想

如果当前浏览器支持window.,那就直接调用这个对象中的方法

b. msg出现了声明提升,可以查看4.25的例子

c. next中出现了隐式的类型转换

4.35、请说明下下面代码的执行过程

a. JavaScript引擎是单线程运行的浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序

b. setTimeout是异步线程,需要等待js引擎处理完同步代码(while语句)之后才会執行while语句直接是个死循环,js引擎没有空闲不会执行下面的alert,也不会插入setTimeout我在chrome中执行在线代码,最后浏览器是终止死循环执行alert

c. JavaScript的工莋机制是:当线程中没有执行任何同步代码的前提下才会执行异步代码,setTimeout是异步代码所以setTimeout只能等js空闲才会执行,但死循环是永远不会空閑的所以setTimeout也永远不会执行。

4.36、输出今天的日期以YYYY-MM-DD的方式,比如今天是2014年9月26日则输出

arguments.属性包含当前正在执行的函数。

Function.返回一个对函数嘚引用该函数调用了当前函数。

更多学习内容:我的学习交流群点击:

我要回帖

更多关于 面试题为什么要当老师 的文章

 

随机推荐