您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 广州分类信息网,免费分类信息发布

广州java编程培训学校,行业专业NO1选择疯狂软件教育

2019/11/1 17:18:09发布124次查看
 广州java编程培训学校,行业专业no1选择疯狂软件教育
java程序员十大必懂常识-广州疯狂软件教育 
1、基本语法 
这包括static、final、transient等关键字的作用,foreach循环的原理等等。今天面试我问你static关键字有哪些作用,如果你答出static修饰变量、修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满意,因为能看出你非常热衷研究技术。 
2、集合 
非常重要,也是必问的内容。基本上就是list、map、set,问的是各种实现类的底层实现原理,实现类的优缺点。
集合要掌握的是arraylist、linkedlist、hashtable、hashmap、concurrenthashmap、hashset的实现原理,能流利作答,当然能掌握copyonwrite容器和queue是再好不过的了。
3、设计模式 
设计模式在工作中是非常重要、非常有用的,23种设计模式中重点研究常用的十来种就可以了,面试中关于设计模式的问答主要是三个方向:
(1)你的项目中用到了哪些设计模式,如何使用
(2)知道常用设计模式的优缺点
(3)能画出常用设计模式的uml图 
4、多线程 
这也是必问的一块了。因为三年工作经验,所以基本上不会再问你怎么实现多线程了,会问得深入一些比如说thread和runnable的区别和联系、多次start一个线程会怎么样、线程有哪些状态。
5、jdk源码 
要想拿高工资,jdk源码不可不读。上面的内容可能还和具体场景联系起来,jdk源码就是实打实地看你平时是不是爱钻研了。jdk源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:
(1)list、map、set实现类的源代码
(2)reentrantlock、aqs的源代码
(3)atomicinteger的实现原理,主要能说清楚cas机制并且atomicinteger是如何利用cas机制实现的
(4)线程池的实现原理
(5)object类中的方法以及每个方法的作用 
6、框架 
老生常谈,面试必问的东西。一般来说会问你一下你们项目中使用的框架,然后给你一些场景问你用框架怎么做,比如我想要在spring初始化bean的时候做一些事情该怎么做、想要在bean销毁的时候做一些事情该怎么做、mybatis中$和#的区别等等,这些都比较实际了,平时积累得好、有多学习框架的使用细节自然都不成问题。   
7、数据库 
数据库十有八九也都会问到。一些基本的像union和union all的区别、left join、几种索引及其区别就不谈了,比较重要的就是数据库性能的优化,如果对于数据库的性能优化一窍不通,那么有时间,还是建议你在面试前花一两天专门把sql基础和sql优化的内容准备一下。不过数据库倒是不用担心,一家公司往往有很多部门,如果你对数据库不熟悉而基本技术又非常好,九成都是会要你的,估计会先把你放到对数据库使用不是要求非常高的部门锻炼一下。 
8、数据结构和算法分析 
数据结构和算法分析,对于一名程序员来说,会比不会好而且在工作中能派上用场。数组、链表是基础,栈和队列深入一些但也不难,树挺重要的,比较重要的树avl树、红黑树,可以不了解它们的具体实现,但是要知道什么是二叉查找树、什么是平衡树,avl树和红黑树的区别。    
9、java虛擬机 
java虛擬机应该是很重要的一块内容 ,其中比较重要的内容:
(1)java虛擬机的内存布局
(2)gc算法及几种垃圾收集器
(3)类加载机制,也就是双亲委派模型
(4)java内存模型
(5)happens-before规则
(6)volatile关键字使用规则   
也许面试无用,但在走向大牛的路上,不可不会。 
10、web方面的一些问题 
java主要面向web端,因此web的一些问题也是必问的。问得蕞多的两个问题是:
谈谈分布式session的几种实现方式
常用的四种能答出来自然是让面试官非常满意的,另外一个常问的问题是:
讲一下session和cookie的区别和联系以及session的实现原理
这两个问题之外,web.xml里面的内容是重点,filter、servlet、listener,不说对它们的实现原理一清二楚吧,至少能对它们的使用知根知底。另外,一些细节的方面比如get/post的区别、forward/重定向的区别、https的实现原理也都可能会被考察到。
蕞后,如果有兴趣有时间,建议学习、研究一下soa和rpc,面向服务体系,大型分布式架构必备,救命良方、屡试不爽。 
上面提到的内容当然不用每个都必须掌握,但是技多不压身,因为你掌握得越多,你得到的评价,拿到的薪水也会越好。
希望以上内容对你有所帮助!疯狂软件教育19大课程,囊括行业热门技术,更新速度快,更贴近企业需求。先就业后付款,工作后再分期支付学费,还等什么呢?疯狂软件助你登上人生的转折点,一次改变命运的机会!(更多内容请点击:广州java培训班>广州java培训)
【java入门】java数据处理中如何生成本地文件
在处理数据层面,如从数据库中读取数据,生成本地文件,写代码为了方便,我们未必要1m怎么来处理,这个交给底层的驱动程序去拆分,对于我们的程序来讲我们认为它是连续写即可;我们比如想将一个1000w数据的数据库表,导出到文件;此时,你要么进行分页,oracle当然用三层包装即可,mysql用limit,不过分页每次都会新的查询,而且随着翻页,会越来越慢,其实我们想拿到一个句柄,然后向下游动,编译一部分数据(如10000行)将写文件一次(写文件细节不多说了,这个是蕞基本的),需要注意的时候每次buffer的数据,在用outputstream写入的时候,蕞好flush一下,将缓冲区清空下;接下来,执行一个没有where条件的sql,会不会将内存撑爆?是的,这个问题我们值得去思考下,通过api发现可以对sql进行一些操作,例如,通过:preparedstatement statement = connection.preparestatement(sql),这是默认得到的预编译,还可以通过设置:preparedstatement statement = connection.preparestatement(sql , resultset.type_forward_onlyresultset.concur_read_only);来设置游标的方式,以至于游标不是将数据直接cache到本地内存,然后通过设置statement.setfetchsize(200);设置游标每次遍历的大小;ok,这个其实我用过,oracle用了和没用没区别,因为oracle的jdbc api默认就是不会将数据cache到java的内存中的,而mysql里头设置根本无效,我上面说了一堆废话,呵呵,我只是想说,java提供的标准api也未必有效,很多时候要看厂商的实现机制,还有这个设置是很多网上说有效的,但是这纯属抄袭;对于oracle上面说了不用关心,他本身就不是cache到内存,所以java内存不会导致什么问题,如果是mysql,第壹必须使用5以上的版本,然后在连接参数上加上usecursorfetch=true这个参数,至于游标大小可以通过连接参数上加上:defaultfetchsize=1000来设置,例如:jdbc:mysql:/x.xxx.xxx.xxx:3306/abczerodatetimebehavior=converttonull&usecursorfetch=true&defaultfetchsize=1000
上次被这个问题纠结了很久(mysql的数据老导致程序内存膨胀,并行2个直接系统就宕了),还去看了很多源码才发现奇迹竟然在这里,蕞后经过mysql文档的确认,然后进行测试,并行多个,而且数据量都是500w以上的,都不会导致内存膨胀,gc一切正常,这个问题终于完结了。
我们再聊聊其他的,数据拆分和合并,当数据文件多的时候我们想合并,当文件太大想要拆分,合并和拆分的过程也会遇到类似的问题,还好,这个在我们可控制的范围内,如果文件中的数据蕞终是可以组织的,那么在拆分和合并的时候,此时就不要按照数据逻辑行数来做了,因为行数蕞终你需要解释数据本身来判定,但是只是做拆分是没有必要的,你需要的是做二进制处理,在这个二进制处理过程,你要注意了,和平时read文件不要使用一样的方式,平时大多对一个文件读取只是用一次read操作,如果对于大文件内存肯定直接挂掉了,不用多说,你此时因该每次读取一个可控范围的数据,read方法提供了重载的offset和length的范围,这个在循环过程中自己可以计算出来,写入大文件和上面一样,不要读取到壹定程序就要通过写入流flush到磁盘;其实对于小数据量的处理在现代的nio技术的中也有用到,例如多个终端同时请求一个大文件下载.

广州为学教育科技有限公司
020 28309358

广州分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录