uc笔试

今晚参加了uc的实习生笔试,越发自己基础掌握还不牢固,看起来又免不了被刷了。暑假还是好好巩固基础吧,校招再战!

下面是一些还记得的题目,重做一遍,也当做是练习。

前面有8道java单选题,还有几道多选题,多选涉及到了快排、二叉树遍历等。

有五道简答题,题目不难,也是很常考的题目,有准备的应该都很熟悉。

1.final,finally和finalize的区别?

final是一个修饰符,可以用于修饰类和变量。当修饰类时,代表该类不可被继承;当修饰变量时,代表该变量不可以重新赋值,即为常量;

finally是用于异常处理的关键字之一。当代码执行到try语句块时,如果发生了异常,将会跳转到catch语句块执行,而无论是否有异常产生,在离开异常处理块之前,都会跳转到finally语句块中执行(特别地,当try语句块中有System.exit(0)代码段时,finally语句块将不会得到执行);

finalize是Object类中的一个方法,根据虚拟机规范,GC在回收一个对象之前,需要先调用该对象的finalize方法,当finalize方法执行后,对象仍符合回收条件时,GC才会真正回收此对象,因此可用此方法安全的关闭一些打开的资源,但并不推荐这样做,因此在对象的一次生命周期中,此方法只会被GC调用一次。

2.HashMap有什么特性,和HashTable的区别是什么?

HashMap是java对关联数组的一种实现,底层采用的是hash散列确定元素的数组下标,并利用链表法解决冲突问题。因为基于hash散列,该容器类对元素的基本操作的时间复杂度都为O(1)。HashMap还允许key为null的情况。HashMap还是线程不安全的,不过也因此比线程安全的HashTable在单线程下效率更高。

HashTable和HashMap基本实现是一致的,但HashTable的方法都是同步方法,因此它是线程安全的。另外它不允许key为null的情况。

3.String,StringBuffer,StringBuilder的区别?

String用于构造不可变的字符串对象。一经创建后,该对象代表的字符串将不可以修改。

StringBuffer用于构建一种可变的字符串对象,并且是线程安全的,StringBuffer主要用于字符串连接操作,相比不可以的String对象,StringBuffer在字符串连接上更加高效。

StringBuilder和StringBuffer类似,但它是线程不安全的,在无需考虑线程安全的情况下,使用StringBuilder要比StringBuffer更高效。

4.sleep()方法和wait()方法的区别?

sleep方法会是当前线程停止执行,但不会释放当前线程持有的锁;wait方法同样可以使当前当前线程停止执行,但会释放当前线程持有的锁;

下面是补充的答案:

1.sleep是Thread的一个静态方法,起作用的是当前调用线程,wait是Object类的一个方法;

2.wait必须在同步块内使用,sleep则可以在任意地方使用

3.sleep会抛出异常,必须捕获,wait则没有需要捕获的异常

5.列举常用集合类的实现原理和适用场景?

ArrayList:

LinkedList:

Vector:

HashMap:

HashSet:

TreeMap:

TreeSet:

ConcurrentHashMap:

uc笔试

时间: 2024-09-17 18:23:45

uc笔试的相关文章

uc笔试后感

今晚刚去华工笔试,深深发现我的基础的确打得不够牢固 不多说了,吸取经验就好了,来分析一下今晚那些感觉做得不好的题 final finally finalized 的区别是什么 final 是修饰符,可以用于修饰变量.方法和类.修饰变量时,代表变量不可以修改,也就是常量了,常量需要在定义时赋值或通过构造函数赋值,两者只能选其一:修饰方法时,代表方法只能调用,不能被 override ;修饰类时,代表类不能够派生出子类,所以一个类不能既是 final 又是 abstract;    finally

c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)

測试源代码: //測试派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; } ~base() { cout<<"base destroyed!"<<endl; } };

多线程中sleep和wait的区别

前几天去UC笔试,有一道简答题问到了.之前还真一直没留意到这个问题,所以答得也不好. 无论学习什么都好,通过对比学习更有利于发现事物的共性和个性,对于知识点的理解更有明显效果(这也可能是UC笔试题上,5道简答题中,有4道都是关于X与Y的区别的问题的原因之一). 既然自己答得不好,那就写下这篇随笔,来警示下自己(不仅是sleep与wait区别,还有多用这种对比学习的学习方式). 翻了很多资料,说的最多的一句就是, sleep与wait最主要的区别在于,sleep与wait都可以使线程等待,但sle

leetcode -day18 Balanced Binary Tree

测试源码: //测试派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; } ~base() { cout<<"base destroyed!"<<endl; } };

c++学习笔记4,调用派生类的顺序构造和析构函数(一个)

测试源代码: //測试派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; } ~base() { cout<<"base destroyed!"<<endl; } };

腾讯、网易有道和阿里的笔试分享及自我总结

声明:本人Android移动开发岗 腾讯:考的很杂 选择题(25题不定项):考的包括: 编译原理两题, 计算机网络一两题(私网地址), C++若干, IOS开发一两题, 还有二叉树两三题,先后序遍历,求深度 jvm也有一题, 概率论一两题, JavaScript一题, 还有C语言(包括指针数组,数组指针,指针函数之类的)也挺多的 更多的是看程序求输出. 大题: 1,10亿QQ号用Set和Vector两个容器来删除奇数号 2,猴子摘香蕉,一次可以摘一根或两根,求摘50根有几种摘法(斐波那契数列)

【转】腾讯、网易有道和阿里的笔试分享及自我总结

声明:本人Android移动开发岗 腾讯:考的很杂 选择题(25题不定项):考的包括: 编译原理两题, 计算机网络一两题(私网地址), C++若干, IOS开发一两题, 还有二叉树两三题,先后序遍历,求深度 jvm也有一题, 概率论一两题, JavaScript一题, 还有C语言(包括指针数组,数组指针,指针函数之类的)也挺多的 更多的是看程序求输出. 大题: 1,10亿QQ号用Set和Vector两个容器来删除奇数号 2,猴子摘香蕉,一次可以摘一根或两根,求摘50根有几种摘法(斐波那契数列)

DP - tencent2016实习生笔试A

tencent2016实习生笔试A Problem's Link ---------------------------------------------------------------------------- Mean: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢?输出需要删除的字符个数. analyse: 对于这题来说,插入字符和删除字符使其成为回文串,答案是一样的. 首先求s的反串rs,然后对s和rs求最长公共子序列,要删除的字

算法学习 并查集(笔试题目:找同伙)

题目背景太长,记得不清楚,暂参考<啊哈算法>一书,根据笔试题目大意改编如下: 警察正要捉获某地区的犯罪团伙,由于强盗人数过大,想查清楚有几个团伙非常困难. 根据上级指示,需要首先尽快抓获强盗A所在的团伙,这需要掌握 1 所在团伙的人数.先有资料如下: 强盗1 和 强盗2 是同伙 强盗3 和 强盗4 是同伙 强盗2 和 强盗5 是同伙 强盗3 和 强盗2 是同伙 注意,强盗的同伙的同伙也是同伙,问  强盗1 的同伙(不包括1自己)有多少人? 该题形式化表示如下: 每个测试实例首先包括2个整数:N