一些开发遇到的"小问题",你能答对多少?

简介: 我会把问题先写在前面,答案用白色字体写在后面.所以用鼠标选择文本就可以看到答案啦.     调用await后因为切换了线程环境(这种说法可能不严谨,但我只能想到这种说法),httpcontext会为null.

 

我会把问题先写在前面,答案用白色字体写在后面.所以用鼠标选择文本就可以看到答案啦.

 

 

调用await后因为切换了线程环境(这种说法可能不严谨,但我只能想到这种说法),httpcontext会为null.自然取他的属性(request,response)会出现未将对象引用设置到实例的异常.

虽然据说4.5有"友好线程上下文"的说法,但是呢,当时我试了那个配置,发现装逼失败.最后用临时变量储存,await之后再赋临时变量给当前上下文.

 

网站 

 

发布网站的时候,全站源代码做成一个压缩包,然后丢到公网的项目根目录里,解压.这个操作有什么问题.

整站源代码都可以下载.好开心耶.(IIS默认没有禁止访问压缩包)

 

为什么网站发布完第一次访问的时候很慢?

JIT(即时编译)

 

基础 

Dictionary

 

        public void RandomString(List<int> list)
        {

            Dictionary<int, string> d = new Dictionary<int, string>();
            foreach (var item in list)
            {
                d.Add(item, "");
            }
         }    

  上述代码有什么问题?

没有判断字典的添加需要先判断key是否存在.推广一下,其实很多情况下自认为不会重复的数据结果往往都会重复,这时候得去重和判断key,两者选择一个方案.

 

正则表达式 

这个判断正则的方法有什么问题?

  public static bool IsEmail(this string str)
        {           
            var reg = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$", RegexOptions.Singleline | RegexOptions.ExplicitCapture);
            return reg.IsMatch(str);
        }

  string参数为null的话正则会出错.其实这也是一个很通用的问题.如果各种引用类型为空的话,你调用他们的成员方法是要出异常的.

 

哪一个if的写法没有问题?

            string[] a;
            if (a.Any() || a == null)
            if (a == null || a.Any())

第二个,因为这涉及到一个程序设计的基本概念:短路.即||/|在条件1为true的话就不会执行后面的判断.

!=null&&XX.Any()同理

而对于null用集合的any方法,显然是不合适的.

 

 

ASB.NET MVC

 

控制器

下图是某个控制器里某个action的写法,不考虑rows的类型和这个异常的出现.此外,这个代码片段有什么问题?

1用request[]绝对差评,不能因为便携性而如此偷懒.并且,要偷懒也是把提交内容作为action参数,模型绑定会帮你转型,如果也不会需要下文的类型转换.

2对于请求的参数类型转换写法有误,理应是tryparse,2个结果皆为true才进行下一步.该coder只考虑了请求参数不为空的问题,没有考虑请求参数的其他合法性问题.

3局部变量的声明声明顺序(list)有误.比如我们需要连接数据库的时候,应该是在所有的验证通过之后,最后调用.

4设计规范问题.很多初学者看了微软模板后认为,控制器负责业务逻辑.然而,实际上控制器应该是最薄的一层,这既是为了方便分开测试.也是MVC本身的规范.

 

        [HttpGet]
        public ActionResult Des(string json)
        {
            return Json(new { a = "" });
        }

  有什么问题?

应使用其重载,追加参数 JsonRequestBehavior.AllowGet

视图 

 

在视图中使用HTML.action 需要注意什么问题?

该方法会走一遍请求管道,滤器也会跑过去

不能使用异步控制器方法(async Task<ActionResult> .ASB.NET vnext将会有异步组件取代.)

递归调用问题.就是这个A的子action里面返回了一个分部视图,然后这个分部视图调用了A的那个action.

这个问题提醒大家,慎用全局过滤器,慎用html.action.

 

如何捕捉视图的异常?

用自定义异常过滤器(HandleErrorAttribute).(好吧,我打脸了).

 

避免因属性变更导致的强类型视图里的字段没有更新导致的视图编译错误如何防止?

可以在编译时追加编译视图.

 

一个不是问题的问题

为什么我写这文章的文字符号都用半角(英文标点)

因为用全角符号写程序符号将导致无法通过编译.

 

 

之前刘兴国一段时间的揭秘网站:

http://cafebabe.cc/nazo/

据说有500关.

 

如果这些问题你都知道答案,那么恭喜你,你是一个"有经验"的开发人员吧.

因为我也不知道经验这玩意该咋衡量.年?好像不太合适.

这些问题都是我遇到过的,如果用年算的话,你觉得能折算成多少年?

目录
相关文章
|
6月前
|
C语言
c语言编程练习题:7-13 后天
如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。
70 0
|
6月前
|
编译器 C++
【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】
|
6月前
|
算法 Python
Python技术分享:使用穷举法解决鸡兔同笼问题
Python技术分享:使用穷举法解决鸡兔同笼问题
256 1
|
6月前
|
C++
【期末不挂科-C++考前速过系列P2】大二C++第2次过程考核(20道选择题&10道判断题&3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P2】大二C++第2次过程考核(20道选择题&10道判断题&3道代码题)【解析,注释】
你知道猜凶手和猜名次如何利用编程实现吗?
你知道猜凶手和猜名次如何利用编程实现吗?
72 0
素数案例-高职考VB技能提升
素数案例-高职考VB技能提升
|
存储 机器学习/深度学习 算法
【第十四届蓝桥杯考前速成】必考知识点及代码模板总结,看完至少多拿50分
四、简单图论 1、单源最短路径 2、多源最短路 3、最小生成树 五、动态规划 1、0-1背包 2、完全背包 3、多重背包 4、线性DP 总结
154 0
|
存储 网络协议 算法
小题 错题总结
小题 错题总结
107 0
小题 错题总结
刷题:运动员猜名次,从能解决到完美解决的代码进阶
刷题:运动员猜名次,从能解决到完美解决的代码进阶
62 0
【蓝桥杯省赛】冲刺练习题【填空题】倒计时【07】天-1
【蓝桥杯省赛】冲刺练习题【填空题】倒计时【07】天
135 0
【蓝桥杯省赛】冲刺练习题【填空题】倒计时【07】天-1