开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
U.S.

美国房屋建筑风格 - Split Level (错层)

这种房屋通常表示的是我们说的错层。 这种房屋通常因为建造相对简单,整体的造价不高而相对便宜一些而在美国房地产市场上面还是大量存在的。在 Split-level 房子的定义上最简单的查看办法就是当你从正门走进去的时候,通常会马上遇到一个楼梯,你需要通过这个楼梯来选择是否是上楼还是下楼。 如果是下楼的话,那么通常就是地下室了。 地下室一般都是属于可以 walked in 的那种,意思就是你可以从外面走进去地下室,而不需要通过楼梯来解决进入地下室的问题。另外一个最好的判断标准就是正门的高度与窗户可能不会在一个水平面上面,基本上会看到有上下的拆分。 主要特点 很多买家可能对这个样式的房子不是非常满意,主要原因是地下室做了使用的空间。在很多情况下的新英格兰地区,地下室的湿度普遍比较高,同时夏天比较阴冷,冬天其实还算好。 因为这种房子的地下室一般还是部署了供暖管线的。很多客户可能主要是从自己的舒适性来考虑的。这个样式的房子的使用舒适性可能并不是非常好,如果是有小朋友的家庭,一般家长都会太愿意让小朋友在地下室里面呆过长时间,并且进门就是楼梯需要进行选择,因此有时候可能会有点选择困难综合症不知道是上去还是下去。 当然也不是所有这种类型的房子都是不好的选择,如果有些设计比较合理的基本上也是没有什么问题。 外观和设计 例如下图显示的错层设计:     我们明显的就可以看到了房子被拆分成了上下层。 基本上可以确定的就是进去后就会有个楼梯进行分层了。 Split Level 这种类型通常有多层,通常在进门后都会有一个小的楼梯。正门对应的基本上都是 2 层之间。 正门面对的通常都是休息的区域,这部分休息的区域通常都会在地面以上的。在楼梯的往下走的部分,通常是一个地下室,这个地下室基本上也是完成了装修的,因为这样能够更多的增加使用面积。 往下走的高度通常也会在在地面水平以下 3 英尺左右。 另外一个比较重要的就是必须还有一个从外面进入地下部分使用空间的门,换句话说,在进入半地下部分的时候,你可以不仅仅依赖正门,而使用其他的门从外面进入。 https://www.ossez.com/t/split-level/13457

2021年05月02日 0Comments 1558Browse 1Like Read more
U.S.

美国房屋建筑风格 - Ranch(牧场式)

Ranch 通常可以理解就是我们常说的大平层了,因为容易进出,对有老人的家庭通常还是非常方便的,更加容易设置无障碍设施。为什么叫做牧场式 ,具体原因也不是非常清楚,对比下马房,因为养马或者放置草料,使用大平层可能更加方便进出,因此这种样式的房子就被称为 Ranch 了。 牧场式起源于美国西南部,单层的设计方便搭建,而且造价也不昂贵,在50、60年代火遍美国,如今仍是很多美国家庭盖房买房的首选房型。 优点:客厅,卧室,厨房都集中在一层楼,方便进出,Ranch 风格的房子对于有老人或者婴幼儿的家庭非常友好。 Ranch 主要特点 Ranch 房子主要有下面的一些特点。 通常只有 1 层 通常使用开放空间的设计图,这种设计图通常就是在一空间中合并了 2 个或者多个空间,同时使用从地面到屋顶的墙壁来进行分隔,有时候也可能会使用门来分隔区域。 通常使用矩形,或者 U 或者 L 形的设计。 可能会用专用的室外或者 Deck(平台) 活动空间。 有比较大的窗户,或者会安装一个比较大的玻璃推拉门。 通常地下室也是完成了装修的,以便于地下室作为生活空间来使用。 车库可能作为 Attached(附加的)方式来与房子称为一个整体。 外观和设计 因为 Ranch 通常是一个大平层,从外面看还是比较好辨认的。 通常来说你能看到的就是只有一层的空间,并且上面是没有空间的,在新英格兰地区,通常这个房子还会在地下室上面,因此你可能会有一个 完整的地下室。       虽然上面的特性是我们常说的 Ranch 应该有的特性,但是实际上并不是所有的特性就必须满足的,比如说上面特性中的大窗户,在正门入口处就没有看到,但是在后面的空间中可能会有一个推拉门让你能够进入后院的 Deck 或者直接进入院子。 在上面的图中,一个重要特性就是 Attached 的车库,而且这个 Attached 的车库是 2 个。 下面我们来看看这个房子的设计图。       从设计图上,我们可以看到所有房子的居住空间都集中在一层。 在新英格兰地区,使用地下室是非常普遍的,因此这个 Ranch 样式的房子还有一个完整的地下室,从房源信息上可以看到,这个地下室是没有完成装修的,这个对房主来说是好事。 因为没有完成装修的地下室是不会收税的,如果买主在买了房子后,可以进行装修来扩展自己地下室的使用空间。 所有家庭使用的设备包括热水器,电器可能都会安装在地下室里面。 因为这个房子的地下室没有装修,如果平层上面的使用面积假设是 2,000 Sqft 的话,如果地下室也是完整的地下室的话,并且客户对地下室完成装修,那么整个使用空间可能会达到 3,500 sqft 甚至更多。这个对新的购房者来说是一个比较好的选择。 https://www.ossez.com/t/ranch/13458

2021年05月02日 0Comments 1978Browse 0Like Read more
Computer Science

如何在 GitHub 上面为你的项目选择开源许可证

到你将代码作为开源软件的方式上传到 GitHub 上的时候,你可能需要为这个软件设置许可证。 最简单的办法就是在项目的根目录中创建一个 LICENSE 文件,然后将许可证的内容贴入进文件即可了。 另外一种方法就是访问你 GitHub 的仓库,然后选择右上角的创建新文件。 在弹出的对话框中,输入文件名为 LICENSE ,然后再单击右上角上的选择一个许可证的模板。 在选择模板中,你可以选择你自己希望使用的许可证。 如果你不知道选择哪个许可证的话,你可以参考 如何选择开源许可证 - 计算科学 - OSSEZ 页面中的内容。 如果你就是想写写代码并且发布出去的话,基本上选取 MIT 许可证就可以了。 然后可以在输入用户名和年份后,单击查看提交即可。 在后续的过程中,GitHub 将为你创建一个新的分支,你可以直接将分支合并进去就可以了。   https://www.ossez.com/t/github/13455

2021年05月01日 0Comments 674Browse 0Like Read more
Computer Science

如何选择开源许可证

在实际开发的过程中,你可能希望为你的开源项目选择许可证。 通常我们也没有精力去自己搞一个许可证,最主要的原因可能是你搞了也没有什么人用。 最常用的许可证是 MIT,Apache, BSD, GPL 这几个,相信很多人一般就只会在 MIT 或者 Apache 这几个中间选。 简单来说,最宽松的许可证就是 MIT,简单来说这个许可证就是,我是屌丝,我就想写代码,其他的你们爱怎么玩就怎么玩吧。 Apache 的许可证相对比较麻烦点,主要也就是每个文件前面需要放置版权说, 其他的几个许可证比较纠结,所以用的人多是组织上多一点点。     对于有选择困难综合症的同学来说,就选个 MIT 吧,因为我们就只想做个想安静写代码的美男子或者美女子。 https://www.ossez.com/t/topic/13454

2021年05月01日 0Comments 799Browse 0Like Read more
Computer Science

北美亚特兰大一金融服务公司面试总结

这一金融服务公司的总部不在美国,在荷兰的阿姆斯特丹。 公司的主要业务是为中小金融机构提供技术方面的业务扩展,包括 API 的服务和在这个服务上与其他公司建立的数据通道。 面试结果 非常不幸的是这家公司在第一轮面试完成后就明确的表示不再进行下一轮的面试的。 但公司面试的同仁还是非常客气的给出了对我这个面试人的总结。整体总结情况就是对本人的评价还是非常不错,有热情也比较符合团队需求,其他经验也比较丰富。 重点是我没有 Spring Reactive 编程的经验,有部分的 Authentication 相关的工作经验。 从后面的总结来看 Spring Reactive 是硬伤,因为没有这个 Spring Reactive 的工作经验可能没有办法适应他们的产品需求。 如果是因为这个原因被拒,那么也是情有可原也不冤枉。 随后也就搜索了下有关 Spring Reactive 的知识。 Reactor 框架是 Pivotal 基于 Reactive Programming 思想实现的。它符合 Reactive Streams 规范 (Reactive Streams 是由 Netflix、TypeSafe、Pivotal 等公司发起的) 的一项技术。其名字有 反应堆 之意,反映了其背后的强大的 性能。 Reactive Programming,中文称 反应式编程。Reactive Programming 是一种 非阻塞、事件驱动数据流 的开发方案,使用 函数式编程 的概念来操作数据流,系统中某部分的数据变动后会自动更新其他部分,而且成本极低。 Spring 框架中包含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器构建的。Reactive 堆栈 Web 框架 Spring WebFlux 在更高版本 5.0 中添加。它是完全非阻塞的,支持Reactive Streams背压,并在 Netty,Undertow 和 Servlet 3.1 容器等服务器上运行。     简单来说,在 Spring 中可能需要更多的了解 WebFlux 框架。 如何拿 Reactive 和传统的 MVC 框架来进行下对比的话,大致的区别如上图所示,可以认为 Reactive 是相对独立于 MVC 的一种框架和调用栈,需要有时间的时候详细了解下。 面试总结 这次面试的整体情况还是良好的。 因为没有 Spring Reactive 的相关知识,因此被拒也在情理之中。这个也不能说明有知识缺陷,可能是在平时工作的项目中没有这方面的需求,因此也没有掌握相关的内容。 唯一需要补充的就是了解相关概念,并且在有空闲的时候进行一些充电即可。 公司面试的过程中没有涉及到算法,在线编程等内容,主要是聊天,聊天的过程还是非常愉快的,整体评价这次面试还是非常轻松和友好的,只是被拒后小郁闷了 3 分钟。 https://www.ossez.com/t/topic/13453

2021年04月30日 0Comments 800Browse 0Like Read more
Computer Science

A “word-wrap” functionality(一个字符串包裹函数)

问题描述 下面是有关这个问题的描述部分。 英文 We are building a word processor and we would like to implement a “word-wrap” functionality. Given a list of words followed by a maximum number of characters in a line, return a collection of strings where each string element represents a line that contains as many words as possible, with the words in each line being concatenated with a single ‘-’ (representing a space, but easier to see for testing). The length of each string must not exceed the maximum character length per line. Your function should take in the maximum characters per line and return a data structure representing all lines in the indicated max length. 中文 我们希望构建一个字符串处理函数,这个字符串处理函数将会对给定输入的字符串和参数进行处理。 我们首先将会定义一个字符串的数组,在这个字符串的数组中每一个元素都是存储为一个单词,同时我们将会给出一个整数类型的参数。你的方法将会对上面输入的 2 个参数进行运算,在每一个单词和每一个单词之间会添加一个字符 ”-“ 来进行区分,同时新生成的数组或者 List 每一元素的字符串长度将不能超过给出的字符串的长度。 如果你新生成的元素是以横杠结尾的话,那么你需要删除这个横杠。 样例 下面给出了这个问题的示例,以便于你参考。 输入参数 1 输入参数 2 输出 words1 = [ “The”, “day”, “began”, “as”, “still”, “as”, “the”, “night”, “abruptly”, “lighted”, “with”, “brilliant”, “flame” ] 13 [ “The-day-began”, “as-still-as”, “the-night”, “abruptly”, “lighted-with”, “brilliant”, “flame” ] words1 = [ “The”, “day”, “began”, “as”, “still”, “as”, “the”, “night”, “abruptly”, “lighted”, “with”, “brilliant”, “flame” ] 20 [ “The-day-began-as”, “still-as-the-night”, “abruptly-lighted”, “with-brilliant-flame” ] words2 = [ “Hello” ] 5 [ “Hello” ] words3 = [ “Hello”, “world” ] 5 [ “Hello”, “world” ] words4 = [“Well”, “Hello”, “world” ] 5 [ “Well”, “Hello”, “world” ] words5 = [“Hello”, “HelloWorld”, “Hello”, “Hello”] 20 [ “Hello-HelloWorld”, “Hello-Hello” ] 上面给出的是是测试用的示例,其中输入参数 words1 到 5 就是定义的变量名而已,不需要过度关注。 思路点评和源代码 这个题目的难度还是比较大的,尤其是在没有开发工具进行编译的时情况下。 这个题目是 indeed.com 的一个在线面试测试题。这个公司的在线面试测试使用的是第三方公司提供的评估工具,主持面试的人可能是对技术并不是非常了解的人,或者是对技术比较了解的人,我们不清楚具体的情况。 但是在面试过程中,他们只注重程序的输出和面试的结果,至于你的思路或者你的想法,主持面试的人可能并不十分关注,同时也不怎么会听你的解释,很多时候你都会是在自言自语。 整体感觉面试互动很少,更多的时候是你在对着屏幕说话。 最开始的时候,我的思路是首先对给出的数组进行遍历,当取得第一个元素的时候,将元素后面添加横杠,然后与长度进行对比,如果长度超过了给定的长度的话那么就删除横杠后压入需要返回的列表中。 如果长度少于返回的长度,那么再取出下一个元素,同时再结尾再添加横杆后进行判断,然后再确定横杠的处理。 这个题目的主要问题就在于横杠的处理,有时候横杠在结尾,有时候横杠在开头,你需要一个一个判读。 在随后的测试中,我发现一直是横杠处理不好,结果导致没有完全通过最后的测试,就是上面测试用例的第二行。 思路 2 因为这个题目时间有限,并且我们还不能使用 StringUtils 来进行一些快速的字符串处理,因此我没有在规定的时间内完成所有的测试。在随后结束面试后,我再仔细思考了下问题后发现其实我们还可以有其他的办法来进行操作。 我使用下面的思路,并且完成了代码的修改。 首先我们需要将输入的数组变成一个长的字符串,单词之间使用横杠分隔。例如,[ “Hello”, “world” ] 将会变成字符串为:Hello-world。 在完成上面的操作后,我们需要使用一个 while 循环来做。 首先在 while 循环中判读整个字符串长度小于给定的长度,这个时候需要直接返回,然后中断循环。 下一步,对字符串,从头到给定的长度进行截断后获得子字符串,随后对子字符串进行判断,如果这个子字符串是以横杠结尾的话,删除横杠然后压入需要返回的数组,然后更新需要处理的字符串为截断后余下的字符串。 如果按照给定的长度进行截断后,你获得最后的一个字符不是横杠,那么我们就知道你截断到了单词上,获得的子字符串中,找到最后一个横杠,然后获得索引的 ID,在获得这个索引的 ID 后对需要处理的字符串按照索引 ID 进行截断。 然后删除掉最后的横杠压入需要返回的列表中。…

2021年04月30日 0Comments 780Browse 0Like Read more
Computer Science

First Unique Character in a String 的变种问题返回第一个找到符合条件的字符

问题描述 下面是有关这个问题的描述部分。 英文 Given a string s, return the first non-repeating character in it and return its index. If it does not exist, return -1. 中文 针对给定的一个字符串 s,你需要写一个算法,返回给定字符串中不重复字符。 这个题目在随后的面试中又出来变种。 这次需要函数返回的找到的字符串,同时输入的字符串中还有大小写。 另外,因为在线编译器的限制,你又不能使用 HashMap。   解题思路 使用 Java 来说还是相对比较好处理的。 解题思路也比较简单,你需要使用一个中间变量来存储,首先还是需要将进行处理的字符串转换为 char 的数组。 然后在数组中拿到第一个字符。 当你拿到第一个字符的时候,你做这样一件事情,将这个字符对目标字符串进行替换为 “”; 如果有相同的,那么肯定会被替换掉,同时你再考虑替换掉一次大写的,一次小写的。 如果有大写字母相同的,那么也会被替换掉。 例如字符串 “serTSSEr”,那么你在完成后上面的算法后,假设我们对比第一个要替换的字符是 s,那么完成后算法后的字符串为 “erTEr”。 我们发现字符串的长度就不是原始长度 -1 了,因为你替换了多个字符串,因此可以知道这个被查找的字符是重复的。 当我们循环到字符 T 的时候,我们会发现完成后算法后的字符串长度就是原始输入字符串长度 -1,那么我们就知道 T 就是我们需要输出的字符了。 需要注意的是特殊情况 “ssee” 这种情况,如果你循环到最后,可能会发现原始字符的长度和完成整个循环后字符的长度没有变化,那么说明所有的字符都有重复,那么你应该返回 “”。 更进一步 为了减少搜索次数,你可以在完成后第一次替换后的余下的字符串中进行算法查找和替换,因为这个算法只需要找到字符,并不需要你输出下标。 因此在循环中,下次需要查找的字符串长度就减少了,算法的效率也就更高了。 完整测试代码,请参考题目中的 GitHub 链接地址:https://github.com/cwiki-us-docs/java-tutorials/blob/master/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/leetcode/LeetCode0387FirstUniqueCharacterTest.java 我们这里将这个测试方法写在下面供需要的童鞋参考。 /** * Return the first Uniq Char String without using Map * @param data * @return */ private String firstUniqCharString(String data) { // NULL CHECK if (data.equals("")) { return ""; } char[] strArray = data.toCharArray(); String retStr = ""; if (data.length() == 1) { retStr = data; } for (int i = 0; i < strArray.length; i++) { String valStr = Character.toString(strArray[i]); String rData = data; rData = data.replace(valStr, ""); rData = rData.replace(valStr.toUpperCase(Locale.ROOT), ""); rData = rData.replace(valStr.toLowerCase(Locale.ROOT), ""); if (rData.length() == 0) { retStr = ""; } else if (rData.length() + 1 == data.length()) { retStr = valStr; break; } } return retStr; } https://www.ossez.com/t/first-unique-character-in-a-string/13448/2

2021年04月30日 0Comments 686Browse 0Like Read more
Computer Science

北美一工作搜索引擎公司技术岗面经

公司名称就不说了,基本上很多人都会用到的一个在北美地区比较流行找工作时候使用的搜索引擎。 这次面试的岗位是技术岗加部分的管理岗位。就目前来说已经完成第二步了,但是感觉不是非常好,其实主要还是在线写代码这部分。 下面对这次面试的过程和经历进行一些总结。 电话面试 当你投了简历后,公司发现可能会比较符合他们的要求,通常公司都会安排一个招聘人员对你进行电话面试。 电话面试通常比较简单,基本上聊一下你过去做过的项目,你当前的职业情况是什么的,为什么想到为离开现在的公司等等。 这个套路基本上所有的电话面试都会遇到,因此不需要担心,你就把你准备好的说辞重复一遍就好了,当然可以针对公司的一些主要业务的不同来进行调整。 这家公司的电话面试在后半部分可能会问一些基础的 Java 的相关内容,在这次面试中,我被问到了下面的一些问题: Hashmap 和 HashTable 有什么不同 线程安全是什么 重载和重写有什么不同 Big O 是什么 等上面几个问题,通常来说这些问题都比较简单,都是概念性的一些问题,你需要对基础概念有所了解,在这个阶段,一般来说都不太会问到具体算法的问题。有些公司喜欢问时间复杂度和空间复杂的以确保你对算法有所了解。 但是在实际的过程中,绝大部分人都在完成功能需求,真正有机会考虑复杂度的情况不多。但没有办法,面试的人有时候就喜欢搞这些东西。所以建议所有童鞋还是要复习下这方面的内容。 1 小时视频面试 在完成电话面试后,如果他们觉得你还不错,可能就会安排下一步的技术面试的。 通常这部分的面试时最闹心的也是最讨厌的,因为你永远不知道他们会出什么算法题,同时你也不知道他们会不会让你用你自己喜欢的 IDE。 个人感觉在这部分的发挥不是非常好,因此感觉基本上应该是没有第三轮的面试了。应该没有多久就会收到一封非常礼貌的拒绝邮件了。 但不管怎么样,我还是凭记忆写一些遇到的问题供大家参考下。 这 1 小时的技术面试分 2 部分,下面分别描述。 设计分析和概念解释 相对来说这家公司还是比较人性化,他们在面试的时候提出了 5 个分类让你选,这 5 个分类具体不记得了,大致应该是系统性能分析,面向对象,测试,开发流程等。 我选的是系统分析和面向对象。 在系统分析部分,他们给出了服务器上一个内存使用的图片,图片上面 CPU 使用率没有怎么变化,但是内存使用一直在增加。问题是,能通过上面的图片进行一些什么分析。 如果是 Java 的话很有可能就是内存泄漏或者线程问题,这个时候你可以给出一个分析思路,通常就是查看日志,Dump 线程池子,检查 HTTP 访问量等等常规方法,照着忽悠就行了。 面向对象部分的问题就比较多了,但是基本上也就是一些基本的概念,依赖注入是什么,怎么注入的,控制反转又是什么,继承关系,类和抽象类,实现 等等。 基本上都是 Java 面试时候通常使用的概念,如果你对这些内容都不太熟悉或者忘记的话,那么可能就需要好好补一下了。 这些概念在面试的时候经常会被问到。 在完成后上面的问题后就是很多人都非常头疼的在线写代码了。 我问了可以使用自己的 IDE 吗?回答是不可以,因为他们说是保持对其他面试人员的公平,因为有时候使用自己的 IDE,你可以导入很多你自己的类。当听到这里的时候脑袋上的乌鸦就飞过了。 哎,摆着现成 StringUtils 不用非要傻乎乎的从定义 Char 开始用,只能说脑袋有病而且是病得不轻。但是也没有办法,也就硬着头皮上吧。 问的问题我已经发到 A “word-wrap” functionality(一个字符串包裹函数) 上面了。 有关问题的具体解答和点评,请访问上面的链接进行查看吧。 这里只说说当时的感受,因为有时间限制,所以你需要尽快理解题目的意思,我尝试用了 StringUtils ,但是在线编译器不让使用。 这个编译器可以让你使用 List,但是有关 List 的方法提示反应很慢,经常提示不出来。 在现场做题的时候没有怎么想明白,想到的就是先获得字符的数组,然后获得第一个单词,然后添加 -,然后再获得第二个,然后再添加 - ,在这个过程中有可能会超过给定的长度,因此需要重新开始下一行。因为可以使用列表,所以你可以比较容易的 add 到你的 List 里面。 但是这里有很多小问题,比如说在不加 - 的时候,正好长度是给定的长度,所以导致有时候输出的不正确,有时候不应该有 - 的时候确有了 -。 在忙活了 40 分钟后终于没有通过测试。 所以估计这家公司应该是凉凉了。 随后在退出面试后,尝试用 IDE 自己写了下,发现如果可以让我用 StringUtils 函数也不是非常复杂。 我们可以将获得的字符串中间全部先加上 -。 然后按照 - 来进行拆分直到重构的字符串为 NULL,这里你可以使用一个 While 循环来做。 可以使用的方法为 removeEnd 和 substring 等。 具体的解答和分析,请访问上面链接中有关问题的具体分析即可。 面试总结 这次面试应该是失败的,总结下来就是很多人都不是非常舒服的代码部分。     因为找工作之前很多人都会复习下基本概念,面向对象,和一些基本的数据结构,因此上面的概念部分只要不是特别偏,很多人都不感觉非常不舒服。 其实非常不舒服的地方就是在在线写代码部分,因为很多已经工作过的同事在工作的时候基本上不会接触到具体的算法,而且这些算法其实很多也没有太大的意义。 但是实际上算法题目非常多,很多都集中在字符串处理上面,通过这次面试,建议还是同学们需要对常用的字符串处理多进行练习。 包括有获得字符串长度,获得子字符串,如何拆分,如何获得字符串中的某一个值等等,通常这些能够帮助你更有信心去面对下一步的挑战。 其实也没有什么关系了,找工作就是在不断的失败中总结,从工作岗位到开始找工作总是需要有一个热身的部分,大家把每一次失败都当做热身就好了。 希望所有人当你有机会面试别人的时候,得饶人处且饶人吧。   https://www.ossez.com/t/topic/13451

2021年04月29日 0Comments 674Browse 0Like Read more
Computer Science

一房地产数据服务初创公司的面经

北美一有关房地产开发和服务的初创公司面经。 因为新冠疫情的原因,很多面试都已经放到网络上了。在北美进行面试之前,还是建议所有打算从事 IT 的童鞋对基础概念都要熟悉一点点。 如果你是学习 Java 或者面向对象的话,通常使用的一些框架,云平台(主要是 AWS)都需要有一些了解才好。 针对 Java 来说,有关面向对象的概念,包括有什么是依赖注入,什么是反转,什么是组件,继承关系,接口,实现等等,都需要有一些基本的了解。 在面试的时候大部分情况都会问到上面的概念。 在搞清楚上面的概念后,就会有一些实际的算法了,其实这些实际的算法算不上难。正常人突击下基本上都可以掌握,唯一比较麻烦点的地方就是使用各种在线平台手动直接写。 其实这也能够看出来面试公司是否人性化的 hashtable 是如何实现的 这个题目还是有点意思的。 很多人都知道 HashTable, 都知道 HashTable 或者 HashMap 是用来存储 K-V 的。但是至于 HashTable 是如何实现的,可能有很多人不知道。或者就算知道可能也不是非常容易的表述清楚。 这个题目的目的就是要求你设计一个 HashTable。在这个题目中,需要搞清楚几个知识点,K 是怎么存储的,V 又是怎么存储的,其中有一个非常重要的概念就是 K 的哈希(Hash)。 有关什么是 Hash 和 Java 中的哈希函数,请参考文章 Java hashCode() 方法 中的内容。 准确的来说进行 Hash 就是对对象进行或者数据进行散列。当你拿到散列的整形数据后,你将会考虑如何将这一个整形数据存储到一个数组中,这个就是你需要的 Hash 表。通常的算法可能就是去模了。 当然假设你有 10 个数据,但是数组正好也是 10 个,那么最好的算法就是每一个数据存储在一个空间中。 当然实际情况可能就不是这样的了,假设你有 11 个数据,但是存储空间只有 10 个,那么就肯定有 2 个数据存储在同一个位置。这个时候你就可以使用链表来将存储在同一个空间的数据链下去。 如上图显示的就是一个典型的 HashTable 的结构。 对一般的面试来说,掌握这么多的内容基本上能够考察你对基本数据结构的了解,以及对 HashTable 的了解。 如果还需要了解更多的,有关 HashTable 的负载因子,扩容等等的研究的话,其实已经超出了面试本身的范畴了。 正常人如果不是认真复习过,或者没事刷一下的话一般比较难答出来。 相信很多人都是使用 HashTable 或者 HashMap,其实很少去了解里面具体的算法和结构,说心里话也真心没有太大必要去了解。 在这个时候如果面试官揪着这堆东西不放,或者非要你说明白里面的很多配置。那基本上可以说明给你面试的人有病或者是有点孔乙己的意思了。 当然,还是建议在面试的时候复习下 HashTable 和 Hashmap 的关系,如果你真想啃一下的话,不妨去看看源代码。 100 以内素数编程,在线写 题目要求非常简单,就是将 100 以内的素数打印出来就可以了。 这个题目的难度并不大。但是如果你没有遇到过或者没有刷过这个题目的话,可能就会被搞懵逼了。 这个题目有几个关键点,首先 1 是一个特殊的素数,因此你的循环需要从 2 开始。这个很多时候和我们使用的循环从 0 开始有不同。 这个题目能够快速解答的关键就是需要使用定义的函数来做,尽量不要在循环里面嵌套循环,因为这样你会很难跳出这个循环,并且循环的起止判断不好判断。 了解了这 2 个点以后就可以比较容易的解决这个问题了。 有关素数的算法中间和代码,请参考:Prime numbers from 1 to 100 (打印 100 以内的素数) 中的内容。 面试总结 这次面试时今年开始打算换工作以来的第一次面试,因此本身就是当成练手的性质了。 很多工作过比较长时间的人都会知道,在找工作之前,需要进行突击的算法,数据结构,基础概念的巩固。因为在实际工作中,这些东西没有人会用到,也没有人会无聊到去刷这些东西。 但是找工作的时候确不得不进行了解了。 总结这次面试来说就是准备不充分,基本上没有刷题就上去写了,而且有一段时间没有在记事本上写代码了,因此基本上是被他们搞懵逼了。 一上来就弄 HashTable 的算法,这个其实还是有点难度的,如果没有认真复习过一些常用的数据结构的话,肯定是做不出来的。 因为不是非常理想的状态来进行面试的,那么这个结果就可想而知了。 当然这 2 个题目用于巩固下基础还是非常不错的。   https://www.ossez.com/t/topic/13441

2021年04月29日 0Comments 792Browse 0Like Read more
Computer Science

Prime numbers from 1 to 100 (打印 100 以内的素数)

问题描述 下面是有关这个问题的描述部分。 中文 题目要求非常简单,就是将 100 以内的素数打印出来就可以了。 在做题之前,需要了解的就是有关素数的定义:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。 质数被利用在密码学上,所谓的公钥就是将想要传递的信息在编码时加入质数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找质数的过程(分解质因数)过久,使即使取得信息也会无意义。 在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数设计成质数,以增加两齿轮内两个相同的齿相遇啮合次数的最小公倍数,可增强耐用度减少故障。 质素的用途比较高端,说白了就是在计算机科学中可以被用在密码学上面。比如说 Java 中用的 Hash 算法就用到了质素。 因此很多面试题喜欢考察 100 以内的素数。 100以内的质数有 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,在100内共有25个质数。 思路点评和源代码 这个题目的难度并不大。但是如果你没有遇到过或者没有刷过这个题目的话,可能就会被搞懵逼了。 这个题目有几个关键点,首先 1 是一个特殊的素数,因此你的循环需要从 2 开始。这个很多时候和我们使用的循环从 0 开始有不同。 另外这个题目需要 2 个循环来做,因为使用了 2 个循环可能比较容易就把你搞晕了。 为了避免这种情况,建议你使用函数来做。 你可以创建一个函数来判断给定的数字是不是素数。这个函数也非常简单,对于给定的值,从数字 2 开始遍历。假设现在这个函数的输入是 5,那么你的循环要从 2 开始,然后将 5 %2, 这个是取余的运算符。 很显然 5%2 =1, 5%3=2, 5%4 =1。在这个遍历过程中,如果你能发现有数字能够被除尽,那么这个被除数就不是素数,如果你发现遍历完成了也不能被除尽,那么这个数就是素数。 这个函数只返回 T/F 就可以了。     这个题目能够快速解答的关键就是需要使用定义的函数来做,尽量不要在循环里面嵌套循环,因为这样你会很难跳出这个循环,并且循环的起止判断不好判断。 另外还有一点需要注意的是,有些在线测试平台可能不会让你使用 List,这个时候你需要考虑使用数组或者直接输出。 代码 https://github.com/cwiki-us-docs/java-tutorials/blob/master/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/algorithm/PrimeNumbersTest.java https://www.ossez.com/t/prime-numbers-from-1-to-100-100/13450  

2021年04月29日 0Comments 899Browse 0Like Read more
1…144145146147148…304
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (524)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1