从学习方面深谈如何进入国内***互联网公司4
记得LZ之前***过的YY面试活动里,LZ问过很多次这个问题,但几乎所有人都答不出来。这只能说明一个问题,那就是大部分人在用synchronized和ReentrantLock的时候,并不会考虑这两者到底用哪个好一些。其实它们的区别很简单,简单的说,就是synchronized由于是底层JVM实现的互斥,因此效率会高一些。而ReentrantLock的功能则比synchronized更多,比如定时获取某个锁,多个等待条件等。并发这一部分是一个程序员进阶的重要部分,希望所有J***a程序员都可以重视这一部分。4)设计模式和反射设计模式和反射这部分内容,LZ个人觉得是一个高阶程序员必须精通的部分。用好了这部分知识,可以让你在实际开发中少写N多代码,而且还可以使得程序的结构更加良好。关于设计模式LZ这里就不多做介绍了,关于反射,其实就是reflect包里的内容,这个包里的类其实并不难,主要是得多用,多看。比如J***a领域里***常用的spring框架,里面其实大量充斥着设计模式和反射的真实使用场景,没事多研究一下,***让你受益匪浅。5)文件IO、NIO、网络IO以及网络协议文件IO、NIO以及网络IO这一部分也是工作当中要经常用到的部分,因此也必须要掌握。其中NIO更多的是了解其原理,此外,tomcat中有多种协议的实现,其中包括了BIO、NIO和APR,这三者一定非常清楚它们的区别,这个可以在connector的protocol属性配置。至于网络IO部分,其实就是net包里的内容。这里面的内容是非常常用的东西,比如你调用HTTP-API,那么就需要使用这里面的类。在这个restful-API泛滥的时代,你少不了要使用HTTP协议调用API。此外,在了解这部分的时候,网络协议也要适当的了解一下,***典型的TCP和HTTP协议是一定要了解的。在LZ参加的面试中,基本上TCP协议是一定会问的,虽然这可能和LZ的简历写了TCP协议有关,但比如TCP协议的重试机制,三次握手的过程,TCP与UDP的区别这一类的知识,还是要了解一下的。至于HTTP协议,相对来说就简单很多了,应用层的协议主要是知道其协议格式即可,比如都支持哪些header、每个header都是什么含义等等。6)小结好了,到此为止,基本要求就差不多介绍完了。没错,其实基本要求这部分,差不多就是要求你有扎实的J***a基础。这也是所有一线互联网公司,基本都会写在招聘要求地前几条的要求。因此,要想进入BAT,那么这一部分的内容一定要了解,而且这部分的内容对你实际开发也是非常有帮助的,并不仅仅是为了应付面试。未完待续。。。。。。)