首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Futurera每周求职tips汇总 第十期

Exception和Error的区别

Java中,异常Exception和错误Error的意义截然不同,简单地说:

Exception是程序自己应该handle的

Error程序自己不handle

Checked exception

一般是针对需要的资源不存在。

比如说我们在读取文件时,我们就要catch或者throw "FileNotFoundException",当文件没有被发现时,Java就会扔出这个 exception,这里出现异常并不是我们的有代码有什么问题,而是我们缺少了必须的资源。

Checked exception是我们预期会发生的异常,所以我们在写程序时如果碰到checked exception,一般编译器会强行要我们handle exception,handle的方式要么是throws,要么是做try/catch。

RuntimeException

运行时异常指的是,在编译的时候编译器不会在意,但运行时就会发生的问题。

比如说编译器觉得loop的语法是对的 (可能会warning,但程序员有时候会忽略),loop明明长度只有5,却access第5个位置,运行时就会出现IndexOutOfBounceException。

RuntimeException一般是bug,是程序 (员) 本身的问题,所以一般是通过改code来更正。因此在写程序时,为了防止没想到的exception,至少要在endpoint上要catch exception。

Error

Error指的不是程序自己的问题,而是JVM (Java虚拟机) 的问题,比如著名的StackOverflowError, OutOfMemoryError。Java虽然也可以throw error,但一般是既不throw也不catch。

Error不是程序直接的问题,但不代表code完全正确,比如说错误地使用recursion会导致StackOverflowError。

MVC与3-tier architecture的区别

Model–view–controller

MVC 是一个architectural pattern,所以这是abouthow to organize the codes。将代码根据职责不同,安排到controller,view和model这三个不同的范围里面。

例如,一个网络应用的project folder里面,大家经常能看到controller,model和view命名的文件夹,来置放各自相关的代码。

3-tier architecture

3-tier是网站的硬件架构。从硬件上,将网络应用分别放到presentation layer,application layer和data layer。一个常见的做法,就是将这三个layer放到三台不同的服务器上面了。

当然,在大型的结构里面,每一层可能代表着几十上百个的服务器。两者虽然看上去都是前端-后端-数据库的形式,但是在MVC里面只是在代码层面上区分,而对3-tier来说,才是更加接近full-stack的前端-后端-数据库形式。

3-tier本身是multi-tiers的一种形式,所以我们可以推理得知multi-tiers就是在硬件层面上对一个网络应用进行拆分和责任化,每一层负责一个具体的任务。

JavaScript中 ==与===的区别

== (equal) 和 === (identical) 的功能基本一样,但在===在比较中没有type的转化。

接下来是每周固定会出现的算法题啦,希望大家在看答案之前自己想想,努力得到更优化的解法哦。

算法题:回文

A palindrome is a word that reads the same backward or forward.

Write a function that checks if a given word is a palindrome. Character case should be ignored.

For example, isPalindrome ( "Refer" ) should return true as character case should be ignored, resulting in "refer", which is a palindrome since it reads the same backward and forward.

拓展:数组排列得到回文

Write a function so that it takes an array of char as input, and return true if you canfind a palindrome from any permutation of the input, or return false if otherwise.

e.g. [a,a,b,b,c,c] is true because one of its permutation, abccba, is a palindrome.

算法题答案

大部分同学可能会想到2种方法,一种是把 string 反过来再比较,一种是反着比较,两者都可以。

如果需要优化,把方法 isPalindrome2() 写得更efficient:里面的loop,不需要循环sLower整个length那么多次,只需要循环length的一半便可以,对于奇偶数都适用。

拓展题答案

与上一题相比,不考虑顺序。其实也就是变相在问,string里的char是否能成双成对:

如果char的数量是偶数,char刚好能成双成对就是palindrome的排列组合

如果是奇数,应该剩一个单身char,被放在回文的中间

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180709G0KW7800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券