<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>面试 on 庞玉栋个人博客</title><link>https://pangyd.com/tags/%E9%9D%A2%E8%AF%95/</link><description>Recent content in 面试 on 庞玉栋个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 17 Nov 2017 21:32:40 +0800</lastBuildDate><atom:link href="https://pangyd.com/tags/%E9%9D%A2%E8%AF%95/index.xml" rel="self" type="application/rss+xml"/><item><title>Java面试基础知识--重点</title><link>https://pangyd.com/post/170-java/</link><pubDate>Fri, 17 Nov 2017 21:31:24 +0800</pubDate><guid>https://pangyd.com/post/170-java/</guid><description>&lt;p>1.面向对象的三大特性&lt;/p>&lt;div class="content rich" data-reactid=".0.1.0.0.0.1.1.1">&lt;p>&lt;span>继承、封装、多态&lt;/span>&lt;br>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>&lt;span>什么是继承?&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>①继承是面向对象程序设计能够提高软件开发效率的重要原因之一。&lt;/span>&lt;/p>&lt;p>&lt;span>②继承是具有传递性的，就像现实中孙子不仅长得像爸爸而且还像他爷爷。&lt;/span>&lt;/p>&lt;p>&lt;span>③继承来的属性和方法是隐式的，也就是在本类里面是看不见的。&lt;/span>&lt;/p>&lt;p>&lt;span>④一个类只能有一个父类，也就是类只能是单继承。&lt;/span>&lt;/p>&lt;p>&lt;span>⑤一个接口可以有多个父类，也就是接口可以是多继承。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>实际项目开发中，一个类继承于另一个类，那么前者就是后者的子类，反则反之。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>&lt;span>什么是封装?&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>对象数据和操作该对象的指令都是对象自身的一部分，能够实现尽可能对外部隐藏数据。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>实际项目开发中，使用封装最多的就是实体类，常常和 JavaBean (类必须是具体的和公共的，并且具有无参数的构造器)一起使用。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>&lt;span>那么，实体类有那些东西呢&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>答：私有的成员变量、无参数的构造器、有参数的构造器、setter和getters方法、重写tostring方法、重写hashCode和equals方法。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>&lt;span>什么是多态?&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>①多态就是对象拥有多种形态：引用多态和方法多态。&lt;/span>&lt;/p>&lt;p>&lt;span>②引用多态：父类的引用可以指向本类对象、父类的引用可以指向子类的对象。&lt;/span>&lt;/p>&lt;p>&lt;span>③方法多态：创建本类对象时，调用的方法为本类的方法；创建子类对象时，调用的方法为子类重写的方法或者继承的方法。&lt;/span>&lt;/p>&lt;p>&lt;span>④存在多态的必要条件：继承、重写。&lt;/span>&lt;/p>&lt;p>&lt;span>⑤多态的作用是消除类型之间的耦合关系。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>在实际项目开发中，A 类继承 B 类，如果在 A 类中不重写 B 类的方法的时候，输出的仍旧是 B 类方法里面的信息(B b=new A());如果在A类中重写 B 类的方法的时候，输出的是 A 类方法里面的信息(B b=new A())。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;/p>&lt;section class="" data-tools="135编辑器" data-id="90150">&lt;section>&lt;section data-width="100%">&lt;p class="" data-brushtype="text">&lt;span>2.Java集合框架树&lt;/span>&lt;/p>&lt;/section>&lt;/section>&lt;/section>&lt;p>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;span>&lt;span>Collection 接口：&lt;/span>&lt;/span>&lt;span>它是 Java 集合框架的一个根接口，也是List、Set和 Queue 接口的父接口。同时它定义了可用于操作 List、Set 和 Queue 的方法—增删改查。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p></description></item><item><title>历数Java程序员面试失败的5大原因</title><link>https://pangyd.com/post/147-java5/</link><pubDate>Fri, 27 Oct 2017 19:31:56 +0800</pubDate><guid>https://pangyd.com/post/147-java5/</guid><description>&lt;p style="text-align: center">&lt;img data-src="https://pangyd.com/uploads/2017/10/74c10f869f038762.jpg" class="" data-ratio="0.6118721461187214" data-w="438" data-type="jpeg" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" data-fail="0">&lt;/p>&lt;h2>&lt;span>&lt;span>&lt;span>＃1 说得太少&lt;/span>&lt;/span>&lt;/span>&lt;/h2>&lt;p>&lt;span>尤其是那些开放式的问题，如“请介绍下你自己”或“请讲一下你曾经解决过的复杂问题”。面试官会通过你对这些技术和非技术问题的回答来评估你的激情。他们也会通过模拟团队氛围和与你的交流互动来判断你的经验和能力。&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;br>&lt;/span>&lt;/p>&lt;p>&lt;span>所以，仅仅只用两三句话来回答不但不能显示出你对这个专业的兴趣，还会让整个面试过程显得非常无聊。如果你不能很好地说明你的经验、成就和技能可以给企业带来的价值，那么你的竞争力毫无疑问就高不起来。所以，你需要对一些最常见的开放式问答作充分的准备，学会推销自己。&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;br>&lt;img class="" data-ratio="1.443298969072165" data-s="300,640" data-src="https://pangyd.com/uploads/2017/10/74c10f869f038762.jpg" data-type="jpeg" data-w="194" width="auto" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" data-fail="0">&lt;br>&lt;/p>&lt;h2>&lt;span>&lt;span>＃2 说得太多&lt;/span>&lt;/span>&lt;/h2>&lt;p>&lt;span>不断地说，不断地说，却并没有什么实质性的内容。换句话说，就是废话连篇，言之无物。如果你不能简洁的解释问题，那么面试官就会怀疑你在工作时的表现是不是也会像你的谈话一样拖泥带水？可以先问问面试官，确定是否真的需要详细解释。&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;br>&lt;/span>&lt;/p>&lt;p>&lt;span>解释也是一门艺术，关键是确定重点，如果需要的话再深入到细节。当聊到业务的时候，就应该从业务的角度看问题，不要涉及任何技术术语。学会用简洁明了的方式解释问题。如果你能时刻把握主旨，那么这一点也不是问题。&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;img data-src="https://pangyd.com/uploads/2017/10/74c10f869f038762.jpg" class="" data-ratio="0.583864118895966" data-w="471" data-type="jpeg" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" data-fail="0">&lt;/span>&lt;/p>&lt;h2>&lt;span>&lt;span>＃3回答不出一些必知的基本技术问题&lt;/span>&lt;/span>&lt;/h2>&lt;p>&lt;span>面试不是技术竞赛，不是看谁答对的问题多，但是有一些“必须知道”的核心Java和Web基础知识，你不能不知。例如，对于Java开发人员&lt;/span>&lt;/p>&lt;p>&lt;span>1）不知道“==”和equals之间的区别。&lt;/span>&lt;/p>&lt;p>&lt;span>2）不知道equals和hashCode方法被隐式调用时的约定。&lt;/span>&lt;/p>&lt;p>&lt;span>3）不知道OO的概念和设计原则。&lt;/span>&lt;/p>&lt;p>&lt;span>4）不能很好地处理多线程。&lt;/span>&lt;/p>&lt;p>&lt;span>5）不知道如何在HTTP客户端与服务器端之间保持状态。&lt;/span>&lt;/p>&lt;p>&lt;span>6）不能解释曾投入精力过的应用程序的高层体系结构。&lt;/span>&lt;/p>&lt;p>&lt;span>7）不知道SQL。&lt;/span>&lt;/p>&lt;p>&lt;span>…&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;img data-src="https://pangyd.com/uploads/2017/10/74c10f869f038762.jpg" class="" data-ratio="0.968" data-w="125" data-type="jpeg" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" data-fail="0">&lt;/span>&lt;/p>&lt;h2>&lt;span>&lt;span>＃4既写不好简单的代码，又回答不出如何解决棘手的问题&lt;/span>&lt;/span>&lt;/h2>&lt;p>&lt;span>作为一个开发人员，你应该根据自己的经验水平，来针对给定的问题和情况编写代码。特别是如果碰到一个比较棘手的问题，那么即使你还没有解决方案，也应该将你的思路讲给面试官听。当然这在面试时会让人特别紧张，尤其是在还有时间限制的情况下，但是你也必须保持冷静，至少应该说明你将如何试着去解决问题的方法。&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;h2>&lt;span>&lt;span>＃5糟糕的礼仪和态度&lt;/span>&lt;/span>&lt;/h2>&lt;p>&lt;span>迟到，不适宜的着装，抖手抖脚，没有眼神接触，过于紧张，没有提问，显示不出对这份职业的兴趣，“我什么都知道”的高傲态度，贬低你的现在和以前的雇主，遇到技术问题时烦躁不安或者垂头丧气，为自己找理由而不是虚心接受错误，与面试官发生争执，不好的肢体语言，随波逐流而没有自己的看法，过于呆板，撒谎，嗓门太大，无法成为良好的倾听者，等等。&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;img data-src="https://pangyd.com/uploads/2017/10/74c10f869f038762.jpg" class="" data-ratio="0.5866336633663366" data-w="404" data-type="jpeg" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" data-fail="0">&lt;/span>&lt;/p></description></item><item><title>Java程序员面试时需要注意的几点</title><link>https://pangyd.com/post/138-java/</link><pubDate>Tue, 17 Oct 2017 21:03:12 +0800</pubDate><guid>https://pangyd.com/post/138-java/</guid><description>&lt;p>给自己写一份非常专业的简历&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>如果你想增加自己的入选机会，那最好还是花点钱制作一份专业的简历。相较于你将来可能得到的巨大收获，这真的只是一个小小的投资。&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>研究面试公司&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>如果你对自己所要面试的公司了如指掌，甚至对官网上的一些博客或视频能够侃侃而谈，相信一定能更能给面试官留下深刻印象，当然，在这过程中也要注意，意见的发表要把握尺度，自信而不自傲！&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>永远不要撒谎&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>最糟糕的就是在面试的时候撒谎。知之为知之，不知为不知，如果你确实不知道，千万不要自作聪明来编造问题的答案。相反，你应该诚实的说，你不知道或者你并不是百分百的肯定，但是你愿意尝试一下，然后再讲讲自己的想法。讲完后也可以问面试官正确答案是什么，以显示你对此非常感兴趣。&lt;/p>&lt;p>&amp;nbsp;&lt;/p>&lt;p>一般来讲，面试官问的问题大都都是他们知道的问题如果你滥竽充数抱着侥幸心理，一旦被发现，面试官马上会质疑你的人品。&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>学会解决算法问题&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>这是每一个开发人员都应该具备的重要技能，而且真要掌握起来也并非那么难。&lt;/p>&lt;p>&amp;nbsp;&lt;/p>&lt;p>在很多面试中，都会有这样的问题，要求你在白板或者电脑上解决软件编程问题，但是许多程序员，即使是那些非常优秀的程序员，都会一下子大脑一片空白，完全理不出思路来。如果你能花时间学会如何解决这种类型的面试问题，那么下次再碰到这种场景，就不会这么紧张了。我们会紧张其实和怯场无关，主要是因为我们不熟悉这些问题，也没有自信能解决这种问题。在这方面建立起自信之后，你就再也不会紧张了。&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>活力洋溢地回答问题&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>只用一个字或者一句话，照本宣科平平无奇地回答问题，或许在技术上是正确的，但是你忘了应该借此机会好好展示自己的激情——这才是一个开发人员能带给团队的最大正能量。&lt;/p></description></item><item><title>Java面试常被问到的题目+解答</title><link>https://pangyd.com/post/125-java/</link><pubDate>Thu, 05 Oct 2017 21:24:02 +0800</pubDate><guid>https://pangyd.com/post/125-java/</guid><description>&lt;p class="">&lt;span>摘要：&lt;/span>&amp;nbsp;第一，anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)? 不行,对于匿名内部类,看到的一句话说的很到位: new &amp;lt;类或接口&amp;gt; &amp;lt;类的主体&amp;gt; 这种形式的new语句声明一个新的匿名类，他对一个给定的类进行扩展，或实现一个给定的接口。&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>第一，anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>不行,对于匿名内部类,看到的一句话说的很到位:&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>new &amp;lt;类或接口&amp;gt; &amp;lt;类的主体&amp;gt;&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>这种形式的new语句声明一个新的匿名类，他对一个给定的类进行扩展，或实现一个给定的接口。他还创建那个类的一个新实例，并把他作为语句的结果而返回。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>这就是匿名类的实质,它本身就是一个类的继承或一个接口的实现,所以继承其它类或借口是无意义的.在eclipse中冶证实了我的想法.无论是继承其它类还是实现其它借口都显示Syntax error on token。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>第二，staticnestedclass和innerclass的不同，说得越多越好(面试题有的很笼统)。&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>static nested class 指静态嵌套类,或称嵌套类,是C++中常用的说法,inner class指内部类,是JAVA中的说法。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>内部类是一个类内部类的统称,具体分为四种：成员类,静态成员类，局部类，匿名类。其中匿名类是局部类的特殊情况。对于成员类和静态成员类都存在于类的顶层代码中。相当于类的静态方法和非静态方法的关系。区别在于成员类依赖于类实例而静态成员类不依赖。所以前者只能访问实例方法和成员而后者只能访问静态方法和成员。它们都用于创建一个只和当前类有关。和其它类无关的依赖类.是否静态取决于是否依赖类的实例。局部类相当于局部变量。存在于类的局部代码中。相当于在main()中随意定义和使用类。唯一的不同是它只能使用final型的局部变量。这和垃圾回收机制有关。即局部变量会在代码块结束后被回收。而对象不一定。所以对象只能使用final的局部变量。同样，局部类存在的局部代码块也可以有静态和非静态的差别。局部类罪常见的应用就是匿名类。匿名类就是无名子的局部类。常在SWING设计中的添加监听中出现。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>static nested class相当于inner class中的静态成员类。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;br>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>第三，&amp;amp;和&amp;amp;&amp;amp;的区别。&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>这个问得很少。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&amp;amp;和^,&amp;lt;&amp;lt;,&amp;lt;&amp;lt;&amp;lt;,|同属于位运算符,其中&amp;amp;是按位与,例如,1&amp;amp;1=1，1&amp;amp;0=0，&amp;amp;&amp;amp;是逻辑运算符,处理真假值，例如,true&amp;amp;&amp;amp;true=true。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>如果你想学习Java可以来这个群，首先是二二零，中间是142，最后是906，里面可以学习和交流，也有资料可以下载。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>第四，hashmap和hashtable的区别。&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>常问。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>hashmap可以看做是hashtable的替代者，HashMap的Value和Key都可为NULL，而HashTable不可以，同时，HashTable是线程同步的，而HashMap不是.HashTable用Iterator遍历，HashMap用Enumeration遍历。HashTable中hash数组默认大小是11，增加的方式是 old*2+1。HashMap中hash数组的默认大小是16，而且一定是2的指数。计算index的方法不同，HashTable直接利用hashcode()得出，HashMap对hashcode重新计算得出。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;br>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>第五，collection和collections的区别。&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>你千万别说一个是单数一个是复数。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>collection是结合类的上级接口，子接口有List和Set等，Collections是java.util下的一个工具类，提供一些列静态方法对集合搜索排序线程同步化等。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>第六，什么时候用assert。&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>api级的技术人员有可能会问这个。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>在调试和优化中使用，用于判断逻辑表达式真假,若为假，终止程序并返回异常.assert比if的优点在于可以选择是否开启assert检查，也就是说assert产生的测试代码可以在正式发布时候选择忽略，这带来极大便利，默认assert检查是关闭的。此外，Junit相比assert来说，有着相似但更强大的测试能力。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>第七，gc是什么?为什么要有gc?&lt;/span>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>基础。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>GC 即 garbage collection(垃圾收集)，是JAVA用于回收内存的一种方式，主要的实现方法有引用计数，标记回收，复制清除等，GC可以避免内存泄露和堆栈溢出，有效提高内存的利用效率，同时将程序员从繁琐的内存管理中释放出来。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;br>&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>&lt;span>第八，string s=new string("xyz");创建了几个stringobject?&lt;/span>&lt;/span>&lt;/span>&lt;/p></description></item><item><title>干货 | 机器学习算法大总结(ML岗面试常考)</title><link>https://pangyd.com/post/35-ml/</link><pubDate>Sat, 05 Aug 2017 17:16:10 +0800</pubDate><guid>https://pangyd.com/post/35-ml/</guid><description>&lt;p style="text-align: justify">&amp;nbsp;找工作时（IT行业），除了常见的软件开发以外，机器学习岗位也可以当作是一个选择，不少计算机方向的研究生都会接触这个，如果你的研究方向是机器学习/数据挖掘之类，且又对其非常感兴趣的话，可以考虑考虑该岗位，毕竟在机器智能没达到人类水平之前，机器学习可以作为一种重要手段，而随着科技的不断发展，相信这方面的人才需求也会越来越大。&lt;/p>&lt;p>&lt;span style="text-align: justify">　　&lt;/span>&lt;br>&lt;/p>&lt;p style="text-align: justify">下面是在找机器学习岗位工作时，总结的常见机器学习算法（主要是一些常规分类器）大概流程和主要思想，希望对大家找机器学习岗位时有点帮助。&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p style="text-align: justify">实际上在面试过程中，懂这些算法的基本思想和大概流程是远远不够的，那些面试官往往问的都是一些公司内部业务中的课题，往往要求你不仅要懂得这些算法的理论过程，而且要非常熟悉怎样使用它，什么场合用它，算法的优缺点，以及调参经验等等。说白了，就是既要会点理论，也要会点应用，既要有点深度，也要有点广度，否则运气不好的话很容易就被刷掉，因为每个面试官爱好不同。&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>&lt;strong style="text-align: justify">&lt;span>朴素贝叶斯：&lt;/span>&lt;/strong>&lt;br>&lt;/p>&lt;p style="text-align: justify">　　有以下几个地方需要注意：&lt;/p>&lt;p style="text-align: justify">　　1. 如果给出的特征向量长度可能不同，这是需要归一化为通长度的向量（这里以文本分类为例），比如说是句子单词的话，则长度为整个词汇量的长度，对应位置是该单词出现的次数。&lt;/p>&lt;p style="text-align: justify">　　2. 计算公式如下：&lt;/p>&lt;p style="text-align: justify">　　&lt;img class="" data-ratio="0.3229571984435798" data-src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-type="png" data-w="257" height="69" width="214" _width="auto" src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-fail="0">&lt;/p>&lt;p style="text-align: justify">　　其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是&amp;nbsp;&lt;img class="" data-ratio="0.3764705882352941" data-src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-type="png" data-w="85" _width="auto" src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-fail="0">的计算方法，而由朴素贝叶斯的前提假设可知，&lt;img class="" data-ratio="0.13725490196078433" data-src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-type="png" data-w="204" _width="auto" src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-fail="0">&amp;nbsp;=&lt;img class="" data-ratio="0.0812807881773399" data-src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-type="png" data-w="406" _width="auto" src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-fail="0">&amp;nbsp;，因此一般有两种，一种是在类别为ci的那些样本集中，找到wj出现次数的总和，然后除以该样本的总和；第二种方法是类别为ci的那些样本集中，找到wj出现次数的总和，然后除以该样本中所有特征出现次数的总和。&lt;/p>&lt;p style="text-align: justify">　　3. 如果&amp;nbsp;&lt;img class="" data-ratio="0.3764705882352941" data-src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-type="png" data-w="85" _width="auto" src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-fail="0">中的某一项为0，则其联合概率的乘积也可能为0，即2中公式的分子为0，为了避免这种现象出现，一般情况下会将这一项初始化为1，当然为了保证概率相等，分母应对应初始化为2（这里因为是2类，所以加2，如果是k类就需要加k，术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式）。&lt;/p>&lt;p style="text-align: justify">　　&lt;span>&lt;em>&lt;strong>朴素贝叶斯的优点：&lt;/strong>&lt;/em>&lt;/span>&lt;/p>&lt;p style="text-align: justify">　　对小规模的数据表现很好，适合多分类任务，适合增量式训练。&lt;/p>&lt;p style="text-align: justify">&lt;span>　　&lt;strong>&lt;em>缺点&lt;/em>：&lt;/strong>&lt;/span>&lt;/p></description></item></channel></rss>