代码精进之路
范学雷
Oracle首席软件工程师,Java SE安全组成员,OpenJDK评审成员
立即订阅
6944 人已学习
课程目录
已完结 48 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你写的每一行代码,都是你的名片
免费
第一模块:代码“规范”篇 (16讲)
01 | 从条件运算符说起,反思什么是好代码
02 | 把错误关在笼子里的五道关卡
03 | 优秀程序员的六个关键特质
04 | 代码规范的价值:复盘苹果公司的GoToFail漏洞
05 | 经验总结:如何给你的代码起好名字?
06 | 代码整理的关键逻辑和最佳案例
07 | 写好注释,真的是小菜一碟吗?
08 | 写好声明的“八项纪律”
09 | 怎么用好Java注解?
10 | 异常处理都有哪些陷阱?
11 | 组织好代码段,让人对它“一见钟情”
12丨组织好代码文件,要有“用户思维”
13 | 接口规范,是协作的合约
14 | 怎么写好用户指南?
15 | 编写规范代码的检查清单
16丨代码“规范”篇用户答疑
第二模块:代码“经济”篇 (14讲)
17 | 为什么需要经济的代码?
18丨思考框架:什么样的代码才是高效的代码?
19 | 怎么避免过度设计?
20 | 简单和直观,是永恒的解决方案
21 | 怎么设计一个简单又直观的接口?
22丨高效率,从超越线程同步开始!
23 | 怎么减少内存使用,减轻内存管理负担?
24 | 黑白灰,理解延迟分配的两面性
25 | 使用有序的代码,调动异步的事件
26 | 有哪些招惹麻烦的性能陷阱?
27 | 怎么编写可持续发展的代码?
28 | 怎么尽量“不写”代码?
29 | 编写经济代码的检查清单
30丨“代码经济篇”答疑汇总
第三模块:代码“安全”篇 (14讲)
31 | 为什么安全的代码这么重要?
32 | 如何评估代码的安全缺陷?
33 | 整数的运算有哪些安全威胁?
34 | 数组和集合,可变量的安全陷阱
35 | 怎么处理敏感信息?
36 | 继承有什么安全缺陷?
37 | 边界,信任的分水岭
38 | 对象序列化的危害有多大?
39 | 怎么控制好代码的权力?
40 | 规范,代码长治久安的基础
41 | 预案,代码的主动风险管理
42 | 纵深,代码安全的深度防御
43 | 编写安全代码的最佳实践清单
44 | “代码安全篇”答疑汇总
加餐 (1讲)
Q&A加餐丨关于代码质量,你关心的那些事儿
结束语 (1讲)
结束语|如何成为一个编程好手?
期末测试题 (1讲)
期末测试丨有关代码编写的那些准则,你掌握了多少呢?
代码精进之路
15
15
1.0x
00:00/00:00
登录|注册

期末测试丨有关代码编写的那些准则,你掌握了多少呢?

范学雷 2020-04-29
你好,我是范学雷。
《代码精进之路》这个专栏已经完结很久了,写专栏的日子依然很难忘,很多同学都会积极地贡献自己的想法、经验,这些思考极大地丰富了专栏的内容,对我也有很多启发。
感谢你一直以来的认真学习和支持。
为了让你更好地检测自己的学习成果,我特意做了一套期末测试题。题目共有 20 道,满分为 100 分,快来检测一下吧!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《代码精进之路》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(2)

  • 刘鼎
    19题,感觉是A。有的方法只看方法名是不能明确方法的行为的。
    2020-07-01
  • Geek_225244

    这段代码没有版权和授权信息,建议在代码头部添加版权和授权信息

    B
    这段代码的构造方法和实例方法没有注释,建议给每个方法都添加注释

    C
    这段代码的 toString(),hashCode(),equals() 方法是继承的方法,建议使用 Override 注解

    D
    getId() 的实现,直接返回了可以修改的内部变量,这存在潜在的安全风险。为了避免不必要的安全漏洞,建议返回 sessionId.clone()

    package co.ivi.codenote;

    /**
     * Encapsulates an session identifier.
     */
    final class SessionId {
        static final byte[] sessionId;

        SessionId(byte[] sessionId) {
            this.sessionId = sessionId.clone();
        }

        byte[] getId() {
          return sessionId;
        }

        public String toString() {
            // snipped
        }
        
        public int hashCode() {
            // snipped
        }
        
        public boolean equals() {
            // snipper
        }
    }
     您好,对第四个选项有疑问: static final byte[] sessionId;不是有final关键字了吗?getId()返回可以修改的内部变量,这个没明白。还有就是考试题中的 这种写法static fina会提示没有初始化,l编译器会报错的。是不是多写了个final关键字。

    作者回复: final关键词没有问题,有问题的是static关键字使用不恰当。sessionId声明为final, 只是表明sessionId的值不能更改,但是sessionId指向的数组还是可以修改的。请参考第34篇。

    2020-05-03
收起评论
2
返回
顶部