一、心得体会
1、今天完成了什么
今天主要完成了Rails100道考试题的7道
2、今天收获了什么
- Rails的缓存有哪几种
- 什么是XSS和CSRF攻击,怎么解决?
- 正则表达式基本要素及其匹配规则
- require、load、include以及expend的区别
3、今天犯了哪些错误
4、今天的状态如何
- 今天状态不错,一个番茄钟学一个概念的方法效果很不错
5、明天还要做哪些工作
- 明天继续看Rails考试题
- 把正则表达式吃透
二、读书笔记
1、Cache 有哪几种?Page caching 如果有类似这样的code Welcome <%= username %> 第一次登录的人是render的,然后cache了,第二个人登录了,那不是直接读cache,页面就是跟前一个人一样的了?怎么回事?
解法:
页面、动作、片段缓存,Rails默认提供了片段缓存,如果想使用页面缓存或动作缓存,要把actionpack-page_caching或actionpack-action_caching添加到Gemfile中。
2、安全问题。怎么破 XSS 和 CSRF攻击
解法:
对于XSS:首先说说什么是XSS(Cross-site scripting),跨站脚本攻击,攻击者在客户端注入可执行代码。
对策:
过滤恶意输入非常重要,但是转义 Web 应用的输出同样也很重要。
过滤恶意输入白名单比黑名单要有效,特别是在需要显示未经过滤的用户输入时(例如前面提到的的搜索表单的例子)。使用 escapeHTML() 方法(或其别名 h() 方法),把 HTML 中的字符 &、"、< 和 > 替换为对应的转义字符 &、"、< 和 >。
对于CSRF:Cross Site Request Forgery,跨站请求伪造。通俗理解:攻击者盗用当前用户身份,发请当前用户的恶意请求:如邮件,银行转账等。
对策:首先,根据 W3C 的要求,应该适当地使用 GET 和 POST HTTP 方法。其次,在非 GET 请求中使用安全令牌(security token)可以防止应用受到 CSRF 攻击。
3、遇到网站很慢,怎么调试1. 假如code是对的 2. 假如是code可以优化,怎么找
4、验证电子邮件格式
/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}/
5、resources :users 会创建哪些路由
users/index
users/new
users/edit
users/create
users/update
users/destroy
6、已知str=”abcdef”, str[0]=? ?如何输出字符“a”
str.split(//).first
7、 [‘a1′,’a3′,’a2′,’a5′,’a4′,’a10′].sort=?
["a1", "a10", "a2", "a3", "a5"]
8、如何为一个已存在的类添加实例方法和类方法
9、require, load,autoload和require_dependency的区别是什么
- require
module Log
def class_type
"This class is of type: #{self.class}"
end
end
class TestClass
include Log
end
tc = TestClass.new.class_type
puts tc #This class is of type: TestClass
- load
module Log
def class_type
"This class is of type: #{self.class}"
end
end
class TestClass
extend Log
# ...
end
tc = TestClass.class_type
puts tc # This class is of type: TestClass
- Require
Require 方法允许你载入一个库并且会阻止你加载多次。当你使用 require 重复加载同一个library时,require方法 将会返回 false。当你要载入的库在不同的文件时才能使用 require 方法。下例将演示 require 的使用方式。
文件 test_library.rb 和 test_require.rb 在同一个目录下。
# test_library.rb
puts " load this libary "
# test_require.rb
puts (require './test_library')
puts (require './test_library')
puts (require './test_library')
# 结果为
# load this libary
# true
# false
# false
10、如何根据URL获取rails项目的controller和action
11、User.find(10) 和 User.find_by_id(10)的区别。
find_by_id找出第一条记录
12、user = User.first; user.name = ‘wangwei’, 如何查看user name被设置为’wangwei’之前的值。
13、”中国 2013″.size= ”中国 2013″.bytesize=?
14、yield self 的用法, 写个例子
15、rails 三种工作环境的区别(development, testing, and production)
16、Rails是什么
17、什么是重构?
18、Active Record是什么?
19、什么数据验证
20、什么是严格验证?
21、什么是条件验证?
22、什么是自定义验证,举个例子?
23、怎么处理验证错误,举个例子?
24、什么是Active Record回调?
25、对象的生命周期是什么?
26、什么是条件回调?
27、什么是事务回调?
28、什么是关联回调?
29、什么是Active Record 关联
30、为什么使用关联?
31、关联的类型有哪些?
32、什么是单表继承?
33、什么是Active Record查询接口?
34、条件查询有哪些方法?
35、排序的方法有哪些?
36、怎么选择特定字段?
37、怎么选择限量和偏移量
38、怎么分组?
39、什么是having方法
40、什么是条件覆盖
41、什么是空关系
42、什么是只读对象
43、怎么在更新时锁定记录
44、怎么联结表
45、什么叫及早加载关联
46、什么是作用域?
47、什么是动态查找方法?
48、enum宏是什么,怎么用?
49、理解方法链是什么,怎么用?
50、如何检查对象是否存在?
51、怎么用EXPLAN命令
52、Rails布局和视图渲染的各组件之间如何写作?
53、如何创建响应?
54、上传文件的视图代码怎么写?
55、如何使用日期和时间的表单辅助方法?
56、什么是请求伪造防护?
57、什么是请求和响应对象?
58、什么是HTTP身份验证
59、数据流和文件下载如何做?
60、什么是日志过滤?
61、异常处理如何做?
62、如何自定义资源路由?
63、什么是非资源式路由?
64、如何加载核心扩展?
65、I18n的工作原理
66、如何发送邮件?
67、Active Job的作用
68、Rails缓存存储器是什么?
69、对条件GET请求的支持
70、缓存键是什么?