Web开发面试题总结
一.你是怎样理解web软件开发的?
答:软件开发就是根据网络软件结构C/S结构的软件和B/S结构的软件。我主要是针对B/S结构的软件进行来发的,根据代码程序的编写来实现后台的功能
二.你有什么优势可以胜任这份工作?
答: 我本人对于编程有着很浓厚的兴趣和爱好,而且有着不错的项目基础,对于一些开发中出现的问题可以自己冷静独立解决,可能我的技术没有没那么优秀,但是我相信我的兴趣会慢慢促使我完善这一不足
三.都开发了什么样的web软件?有没有上线?
答:
四.了解过MVC处理模式吗?简单说说你的理解?
答:模型-视图-控制器(modles-views-controller)是一种非常经典的软件架构模式,从设计模式的角度来看,MVC模式是一种复合模式,他将多个设计模式在一种解决方案中组合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色,分为三个核心部件:Model(模型) View(视图) Control(控制器)
五 简述MVT处理模式?
答:在MVC基础上,对于MVC处理模式的C–控制器进行封装,通过路由模块对于新增的模块功能(Template)进行映射,实现前端页面的展示。
六 django是个怎样的web框架?为什么你们的项目选择它?
答:django是一个前沿的MVT软件架构,它具有强大的视图模板支持,完善的路由地址映射,高效的ORM数据操作,成熟的后台管理系统,多线程多用户高效服务,优秀的表单处理功能,优秀的表单处理模式,优雅的缓存数据操作。。。
因为我们的项目需要快速开发,在短的时间内开发出完全的功能,所以我们采用这样重量级的web框架。
七 get方式和post请求方式有什么区别?
答 在我们请求服务器时,提供了八种请求方式,不过我们经常用的时get和post这两种请求方式。
Get方式:
1.get方式传递数据不需要保密只会传递一些简单的数据
2.get方式传递数据会出现在URL地址中
3.操作处理效率较高
POST方式:
post传递数据需要一定的保密性,用于传递大量的数据
传递的数据会包装在请求体中,不会明文显示
操作处理效率比get略低
八 什么是回话跟踪技术?在项目中你是怎么样用到的?
答 一般来说,当一个客户端连接到服务器时,服务器会出现一个session,客户端会保存一些cookie数据,用于记录用户的状态。一般在项目中用于登录状态的检测以及一些信息的关联。
九 session和cookie有什么区别?
答 session:session是客户端访问服务器,服务器内部一个存储数据空间,用于储存与当前客户端交互的信息,可以保存各种类型的数据,有过期时间限制,通常情况下客户端完全断开时会销毁session数据
Cookie:cookie是客户端访问服务器时,服务端在客户端临时储存的数据,存储的格式只能是键值对的格式,有过期时间限制,超过时间限制会自动销毁。
十 什么是状态保持?项目中什么时候用到了状态保持?
答 状态保存用来保持用户的浏览状态,比如用户是否登录过,是否浏览过哪些商品等。一般采用两种方式1.在客户端存储信息–cookie 2.在服务器存储信息用session
十一 Django开发,前端页面和后端程序是怎么交互的?
答 一般情况下主要有两种方式form表单提交和前端的ajax异步请求。
Form表单:form提交,更新数据完成后,需要转到一个空白页面再对原页面进行提交后处理;
Ajax:ajax则不用,可以直接返回原页面进行提交后的处理。可见ajax可以比隐藏form提交少增加一个页面。
但是ajax出于安全性考虑,不能对文件进行操作,所以就不能通过ajax来实现文件上传,而通过隐藏form提交则可以实现这个功能,所以这就是目前用隐藏form提交的主要用途。
十二 django项目中,数据模型类和数据库的表是怎么关联?
答 django中通过ORM数据处理模式来进行数据模型类和对于数据库中的表的一一关联。模型类的类名对应数据库中的表名,模型类的初始化的变量和属性对应数据库中表的字段和字段的格式。
十三 django是通过什么方式来完成数据的增删改查?
答 django中通过创建模型管理类和初始化增删改查的方法对于数据库中的字段数据进行相应的增删改查。
十四 什么是跨域?怎么解决跨域问题?项目中什么时候用到了跨域?
答 跨域是指浏览器不能执行第三方网站的脚本,它是由同源(域名和端口都相同)策略造成的,是基于网络安全施加的安全限制。一般会采用Jsonp(只支持get请求不支持post请求)和代理接口的方式解决。在项目中一般如果需要访问第三方网站和在公司服务器集群中,访问其他服务器的数据时会用到跨域请求。
十五 什么是跨域请求伪造?会造成什么后果?Django中怎么防范跨域请求伪造的?
答 举个例子:银行网站A,它以GET请求来完成银行转账的操作,http://www.mybank.com/Transfer.php?toBankId=11&money=1000
危险网站B,它里面有一段HTML的代码如下:
http://www.mybank.com/Transfer.php?toBankId=11&money=1000>
首先,你登录了银行网站A,然后点击危险网站B,噢,这时你会发现你的银行账户少了1000块……
因为此次请求是你浏览器发出的,所以服务器不会拒绝,csrf不攻击服务器端而攻击正常访问网站的用户。
Django中主要采用跨域请求防范令牌,如果是form表单请求,可以在表单中加上防范令牌{%csrf_token%}
也可以增加验证码功能进行身份验证。
十六 什么是脚本注入?会造成什么后果?Django中怎样防范的?
答:sql注入是从正常的端口访问,而且表面看起来跟一般的web页面访问没什么区别,可能被入侵很长时间都不会发觉。根据具体情况进行分析,构造巧妙的脚本,从而成功获取想要的数据。导致用户数据丢失造成不可挽回的伤害。Django中最简单最容易的是限制用户输入。简单点的就是不允许用户输入单引号 和 –,因为单引号号–在SQL中都是影响执行的,两种方式一种是在JSP中加判断。另一种是在SQL拼接是对单引号和–等进行转义,例如:str = str.replace(“’”, “””);