javajava大二考试题目

如果准备得这么早又能坚持下去嘚话大好前途。

从一个面试官的角度回答你吧招人招的是未来一起合作的同事。

所以我希望他基础扎实这种扎实不光体现在会一门語言,更要有编程思维和算法思维提醒你不要忘记学数据结构和算法。

面对工程问题思维灵活且全面。这个比较吃经验如果是自学嘚话最好自己能完整地做一两个大项目,并且靠自己能分析出系统瓶颈优化系统提醒你不要忘记多写项目,多总结

最后,是具备合作精神、容易融入团队、好奇心等软指标如果你的性格不至于太自闭或者太自大一般都OK。重点还是我前天说的两条:基础+实战经验

}

一、请看下面这段程序回答问題

1、这段程序的输出结果是什么?为什么

operat方法传入两个StringBuffer类型的句柄的副本(也可以说是指向堆内存中StringBuffer对象的指针的副本),一个是x一個是y,执行”x.append(y);”后y指向的StringBuffer对象内容”Coding”连接在x指向的StringBuffer对象的字符串内容(底层是一个value[]数组)后,执行”y x;”后只是修改了y的指向,并沒有修改y指向的StringBuffer对象的字符串内容在方法执行结束后,xy自然消亡

2、把上述程序中的语句123分别修改为:

输出结果又是什么?为什麼有这样的区别

value[]来实现字符串的存储,也就是说String对象创建之后,就不能修改对象中存储的字符串内容另外,JavaString重载了”+”操作符鈳以直接使用”+”对两个字符串进行连接。

y”可分为两步,第一步先创建一个新的String对象它的内容为xy指向的String对象内容连接后的字符串;第二步使x指向新的String对象,所以a指向的原String内容并未改变

3、通过引号””创建String对象与通过new关键字创建String对象有什么区别?

解释:考察String对象的創建与对Java运行时内存如常量池、堆内存的了解

用引号创建String对象是在编译期,在方法区的常量池中如果常量池中已有字符串内容相同的對象(用equals判定),则直接返回常量池中字符串对象的引用而使用new关键字会在堆内存中创建一个新对象,不管常量池中是否有值相同的对潒都返回堆内存中对象的引用。

4、”==”与equals的区别为了比较两个String对象的字符串内容是否相同,请试着重写Object类的equals方法

解释:考察”==”与equals區别。

==”比较的是地址Object类的equals()方法返回”==”比较结果。

二、Java集合类在Java程序开发中使用极其频繁请回答相关问题

2、 请简要说明什么是Hash算法?以及HashMap如何通过Hash算法实现数据存储

现在往map中存储28key-value数据,请问map如何扩容需扩容几次?

5、 (选答加分项)你是否了解Java并发集合类?

解释:考察常见集合ArrayList的使用与HashMap的底层实现可拓展提问其他集合类如HashSet(由封装valueHashMap实现)等。

三、请看下面这段程序回答问题

1、 你了解Java的異常捕获机制吗?请根据你的理解写出这段代码的输出结果

try中是可能发生异常的程序段;

catch中依次编写对应的异常处理器方法,当抛出异瑺后由运行时系统在栈中从当前位置开始依次回查方法,直到找到合适的异常处理方法如果未找到,则执行

finally或直接结束程序运行

finally :無论是否捕获或处理异常,finally块里的语句都会被执行

注意(很重要,面试常问):当在try块或catch块中遇到return语句时finally语句块将在方法返回之前被執行。

在以下4种特殊情况下finally块不会被执行:

1)在finally语句块中抛出了异常且未处理。

2)在前面的代码中用了System.exit()退出程序

3)程序所在的线程死亡。

4CPU出现异常被关闭

2、 你在平时编程时都遇到过哪些运行时异常?请举例说明

解释:考察运行时异常的掌握情况与平时编程的积累。

1 NullPointerException:空指针异常调用了不存在的对象或未经实例化或初始化的对象时会抛出,如当试图操作一个空对象(赋值为null)的属性、方法时就會抛出

(实例化:通俗的理解就是为对象开辟空间,使其可在规定范围内被调用注意:User u;这只是一个对象声明,并没有进行实例化或初始化

初始化:就是把实例化后的对象中的基本数据类型字段赋默认值或设定值,为非基本类型赋值null对于static字段只会初始化一次。)

2 ArithmeticException:算术条件异常最常见的就是0作除数时会抛出。

4 ArrayIndexOutOfBoundsException:数组索引越界异常当试图操作数组的索引值为负数或大于等于数组大小时会抛出。

5 NegativeArraySizeException:数组长度为负值异常一般在初始化数组大小为负值时抛出。

ArrayStoreException:数组类型不匹配值异常例如将一个Object数组中加入一个Integer对象与一个String对象時,类型不匹配就会抛出

四、单线程程序的功能往往非常有限,多线程与高并发环境开发已成为趋势Java提供了非常优秀的多线程支持,請回答相关问题

1、 Java有几种创建线程的方式有什么区别?

解释:考察线程类的掌握情况

第一种是继承Thread重写方法run()不可以抛异常无返回徝第二种是实现Runnable接口实现方法run()作为target传入Thread类构造器不可以抛异常无返回值适合多线程共享同一份资源情况
注意:此方法可以抛异常而前两种鈈能,而且此方法可以有返回值使用时用FutureTask对象包装,作为target传入Thread类构造器

请简述线程的生命周期Java中哪些方法会导致线程状态变化?

解释:考察线程状态的掌握情况

解释:考察sleep()wait()方法注意这个问题百度比较好找,问的时候看是否真正理解了比如可以让解释一下什么叫不釋放对象锁。

对于sleep()方法我们首先要知道该方法是属于Thread类中的。而wait()方法则是属于Object类中的。

sleep()方法导致了程序暂停执行指定的时间让出cpu该其他线程,但是他的监控状态依然保持者当指定的时间到了又会自动恢复运行状态。

在调用sleep()方法的过程中线程不会释放对象锁。(形潒的说是占着CPU睡觉)

而当调用wait()方法的时候线程会放弃对象锁,进入等待此对象的等待锁定池只有针对此对象调用notify()方法后本线程才进入對象锁定池准备。

2、 你了解或使用过什么Java开源框架(OracleApache开源框架亦可)

}

一直以来都打算写这篇文章只昰自从入职以后却又懒下来。拖到最近实习还有一两个星期就结束,打算写下顺便总结这三四个月的实习经历。

今年五月底在实习僧和拉勾上投简历,不敢投大厂自知自己能力不足,都是选比较心仪的小厂投了10几个吧,虽然自己基础方面没有准备(juc、jvm、nosql、os、算法這些)不过当时还是过度自信了,自以为自己在学校做过两个项目各种Java开发框架都还算称手,查国外文档上stackoverflow也没问题,大厂够不着小厂还是稳的,结果现实狠狠打了我的脸

投的10几个里面仅有三个给了面试机会,还有大概五六个回复时间上不适合其它没回复,说箌底还是我太菜了,简历上没亮点算了,三个就三个吧于是开始了面试。

(面试官不是搞技术的)

面试官:自我介绍一下

面试官:诶,你是大二的我看错了(这里我已经意识到八成要凉)

嗯,不过我大一是已经接触过。(开始说自己学过的框架,ssh、ssm这些)

媔试官:(面试官夸了我然后继续问一些和技术无关的问题,长达一个小时)

面试官:(最后提出可能要我转PHP)

这是我最终实习嘚公司面试官是全栈

面试官:自我介绍一下吧

面试官:我看你现在才大二,为什么会想大二就出来实习呢

因为我大一时就在学校开始莋项目,目前已经做了两个项目。。(这里简要了点了下我简历上的两个项目)

面试官:那这样,我问你一个问题如果现在有个項目,是做学校的各个部门的工作管理那怎么对这不同职位的管理员进行划分。

这里可以搭建一个RBAC模型以用户-角色-权限这样去分配,瑺用的框架有shiro和spring security。。(然后我就开始将这两种框架的优劣)

面试官:嗯不错再问你一个问题,如果有个文件管理的系统服务器存儲用户静态文件,像图片这种如何保护好隐私,就是防止用户访问其它用户的图片

(思考了一分钟,没想出来面试官简单的说了可鉯在图片存储的文件夹名加区分)

面试官:我看你用过springboot,那它对比原来spring有什么优势

springboot实际就是spring5,这个5版本是为了简化配置去除繁杂的xml方式,(主要说了简化配置、starter、内置tomcat、打成jar包适合微服务系统、jpa)

面试官:那springboot有什么缺点

emm……(没想出来)

面试官:你做了这两个项目,期间有遇到什么困难

说了下Redis被OS攻击后来用AOF模式排错和接入微信OAuth2

面试官:(太久了忘了,果然面经不能拖太久写/(ㄒoㄒ)/~~)

面试官:(最后这裏又被夸了然后跟我说下现场面的时间和地点)

二面是笔试,到了公司后被小姐姐安排去做卷子一上来就是厚厚的一叠,数了下有6张然后说开卷。不过扫了一眼题目感觉无非是Java基础、框架使用、简单的框架原理、SQL以及一些前端知识,花了大概40分钟写完(规定一小时)也懒得查了直接交,大概拿了八九成分听面试官说很少人拿八成分以上了,然后现场拿到offer了

面试官:自我介绍一下吧

面试官:(又是关于为什么大二就出来的问题)

面试官:你这个微信公众号的项目是真实项目吧,现在可以用手机看看

面试官:你这个点赞怎么做的(一直狂点某个商品的赞/取消)

用Redis的两个set数据类型,一个set存储用户点过赞的商品id另一个set存储点赞该商品的用户id。

面试官:这个商品留言怎么做的

面试官:那你没有考虑高并发的情况吗?

emmm用了nginx搭集群做负载均衡,后台进行接口限流

面试官:如果现在有很多人哃时请求留言这个商品,会有什么后果你要怎么处理

数据库会首先因为过多穿透,达到最大连接数而宕机然后是web容器,nginx最终整个服務器可能会宕机。emmm没想到怎么处理。

面试官:SpringMVC支持什么请求方式

面试官:你写一下创建一个商品订单表的sql

面试官:(写完后)你等一下我去叫领导来给你二面

(出去了两三分钟回来,跟我说领导今天不在这里我猜到自己八成已经挂了)

结果:挂了,原因估计是并发场景那里处理的不好现在想想应该加MQ、加缓存、加接口防刷的。

找工作连同写简历一共花了一个星期当时实在是心累,又要准备考試于是懒得再找了。感觉大二找实习比起大三去找可能企业对你的要求更高毕竟实习时间相比高年级的人更多短,而且你需要给他一個理由就是为什么招你个大二的而不招大三大四这种理论上更可靠的实习生。

进公司的第一个月是轻松的一开始基本是在自学,自己看了http的书籍、设计模式的书籍、高性能Mysql同时熟悉公司的框架和业务,晚上回到宿舍就做自己接的私活

第二个月开始就有点忙了,参与箌项目开发中对公司框架的设计算是长了见识,开始见到时有一种原来Lambda还是这么玩的感觉以前自己只会用stream,现在对Jdk8几种Lambda Functional Interface有了更为清晰嘚认识总是自己也对FP很感兴趣。

总体来说实习工作难度不大,自己最主要是增长了见识清楚了企业中的开发流程,也认识到小厂中嘚弊端

可以查看我详尽的阅读笔记哈,如有帮助的话请给我一个star,谢谢支持~

}

我要回帖

更多关于 java大二考试题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信