没有合适的资源?快使用搜索试试~ 我知道了~
涉及到一些前后台、数据库的综合知识。
资源推荐
资源详情
资源评论
高级工程师面试题
一、对于 Web 性能优化,您有哪些了解和经验吗?
1、前端优化
(1)减少 HTTP 请求的次数。我们知道每次发送 http 请求,建立连接和等待相应会花去相当一部
分时间,所以在发送 http 请求的时候,尽量减少请求的次数,一次请求能取出的数据就不要分多次
发送。
(2)启用浏览器缓存,当确定请求的数据不会发生变化时,能够直接读浏览器缓存的就不要向服务
端发送请求。比如我们 ajax 里面有一个参数能够设置请求的时候是否启用缓存,这种情况下就需要
我们在发送请求的时候做好相应的缓存处理。
(3)css 文件放 在<head>里面,js 文件尽量放在页面的底部。因为请求 js 文件是很花费时间,
如果放在<head>里面,就会导致页面的 DOM 树呈现需要等待 js 文件加载完成。这也就是为什么
很多网站的源码里面看到引用的文件放在最后的原因。
(4)使用压缩的 css 和 js 文件。这个不用多说,网络流量小。
(5)如果条件允许,尽量使用 CDN 的方式引用文件,这样就能减少网络流量。比如我们常用的网
站 http://www.bootcdn.cn/。
(6)在写 js 和 css 的语法时,尽量避免重复的 css,尽量减少 js 里面循环的次数,诸如此类。
2、后端优化:
(1)程序的优化:这是一个很大的话题,我这里就选几个常见的。比如减少代码的层级结构、避免
循环嵌套、避免循环 CURD 数据库、优化算法等等。
(2)数据库的优化:(由于数据库优化不是本题重点,所以可选几个主要的来说)比如启用数据库
缓存、常用的字段建索引、尽量避免大事务操作、避免 select * 的写法、尽量不用 in 和 not in 这种
耗性能的用法等等。
(3)服务器优化:(这个可作为可选项)负载均衡、Web 服务器和数据库分离、UI 和 Service 分
离等等。
二、MVC 路由理解?
参考答案:
1、首先我们要理解 MVC 中路由的作用:url Routing 的作用是将浏览器的 URL 请求映射到特定的
MVC 控制器动作。
2、当我们访问 http://localhost:8080/Home/Index 这个地址的时候,请求首先被
UrlRoutingModule 截获,截获请求后,从 Routes 中得到与当前请求 URL 相符合的 RouteData
对象, 将 RouteData 对象和当前 URL 封装成一个 RequestContext 对象,然后从
Requestcontext 封装的 RouteData 中得到 Controller 名字,根据 Controller 的名字,通过反射
创建控制器对象,这个时候控制器才真正被激活,最后去执行控制器里面对应的 action。
三、谈谈你觉得做的不错系统,大概介绍下用到了哪些技术?
主要考点:这是一道非常开放的面试题。博主遇到过好几家公司的面试官都问道了这个,博主觉得他
们是想通过这个问题快速了解面试者的技术水平。此题只要结合你最近项目用到的技术谈谈就好了。
参考答案:
就拿我之前做过的一个项目为例来简单说明一下吧。项目分为客户端和服务端,客户端分 为 BS 客
户端和 CS 客户端,BS 客户端采用 MVC 5.0 的框架,CS 客户端是 Winform 项目,服务端使用
WebApi 统一提供服务接口,考虑以后可能还要扩展手机端,所以服务接口的参数和返回值使用 通
用的 Json 格式来传递数据。
1、服务端采用的面向接口编程,我们在软件架构的过程中,层和层之间通过接口依赖, 下层不是直
接给上层提供实现,而是提供接口,具体的实现以依赖注入的方式在运行的时候动态注入进去。MEF
就是实现依赖注入的一种组件。它的使用使得 UI 层不直接依赖于 BLL 层,而是依赖于中间的一个
IBLL 层,在程序运行的时候,通过 MEF 动态将 BLL 里面的实现注入到 UI 层里面去,这样做的好处
是减少 了层与层之间的耦合。服务端的异常里面、权限验证、日志记录等通用功能使用了 AOP 拦截
的机制统一管理,项目中使用的是 Postsharp 这个组件,很好 地将通用需求功能从不相关的类当中
分离出来,提高了代码的可维护性。
2、BS 的客户端采用的 jquery+bootstrap 的方式,所有页面采用流式布局,能更好适应各种不同
的终端设备(PC、手机)。项目中使用了各种功能强大的 bootstrap 组件,能适应各种复杂的业务
需求。
四、Js 继承实现。
主要考点:这道题考验面试者对 js 理解的深度。根据博主的经历,这种题一般在笔试出现的几率较
大,为什么把它放在这里,因为它确实太常见了。其实 js 实现继承的方式很多,我们只要写好其中
一种就好了。
参考答案:原型链继承
1
2
3
4
5
6
7
8
//1.定义 Persiong 函数
function Person(name, age) {
this.name = name;
this.age = age;
}
//2.通过原型链给 Person 添加一个方法
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Person.prototype.getInfo = function () {
console.log(this.name + " is " + this.age + " years old!");
}
function Teacher(staffId) {
this.staffId = staffId;
}
//3.通过 prototype 生命 Teacher 继承 Person
Teacher.prototype = new Person();
//4.实例 Teacher 函数
var will = new Teacher(1000);
will.name= "Will";
will.age = 28;
//5.调用父类函数
will.getInfo();
六、IIS/Tomact/Nginx 的工作原理?
主要考点:此题主要考的是.net framework 和 IIS 是如何结合呈现页面的。这是一个有点复杂的过
程,面试的时候不可能说得完整,那么我们就抓住几个关键点说说就可以。其实博主也不能完全理解
这个过程,今天正好借这个机会温**下。
参考答案:
1、当客户端发送 HTTP Request 时,服务端的 HTTP.sys(可以理解为 IIS 的一个监听组件) 拦
截到这个请求;
2、HTTP.sys 联系 WAS 向配置存储中心请求配置信息。
3、然后将请求传入 IIS 的应用程序池。
4、检查请求的后缀,启动 aspnet_isapi.dll 这个 dll,这个 dll 是.net framework 里面的,也就是
说到这一步,请求进入了.net framework 的管辖范围。
5、这个时候如果是 WebForm,开始执行复杂的页面生命周期
(HttpRuntime→ProcessRequest→HttpContext→HttpHandler);如果是 MVC,则启动 mvc
的路由机制,根据路由规则为 URL 来指定 HttpHandler。
6、httpHandler 处理请求后,请求结束,给出 Response,客户端处理响应,整个过程结束。
剩余11页未读,继续阅读
资源评论
十年小白菜
- 粉丝: 59
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 目标跟踪-基于目标中心点同时进行目标检测+目标跟踪算法实现-项目源码-优质项目实战.zip
- Python《文本特征分析-全唐诗数据挖掘及分析 》+源代码
- Netron-Setup-4.5.0
- 可编辑的地图图形3-世界、各洲、美国地图.xls
- NineAi 新版ChatGPT AI系统网站源码
- Anaconda3-2022.10windows版本
- 基于Servlet的URL访问安全控制.doc
- 可编辑的地图图形-2-中国到省、到市、到县地图.xls
- 快慢指针法判断链表是否有环-go语言实现
- Python《金融新闻数据挖掘分析 (数据抓取、NLP算法分析、量化策略、回测框架等)》+源代码+项目说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功