持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
作为Java新入行的小女生,希望在我加入掘金的这段时间,可以向各位大佬学习更多知识,也可以和同为新手的各位共同进步!!!O(∩_∩)O哈哈~
那么,在你认为Java和其他语言相比,有什么优点和缺点呢?在我认为,每一件事物都不是完美的,优点和缺点是共存的,如若各位亲有想要的表达的,可以在评论下面留言呀,也可以让我多学习一些的嘞^_^
在加入掘金的最开始,也是这第一天,那就给大家一些我收集的一些面试题,大家看一下,可不要喷我哟(^▽^)
1.简述TCP/UDP协议的区别?
如下表所示:
| 比较项 | TCP | UDP |
|---|---|---|
| 是否可连接 | 面向连接 | 面向非连接 |
| 传输可靠性 | 可靠地 | 不可靠的 |
| 应用场合 | 传输大量的数据 | 少量数据 |
| 速度 | 慢 | 快 |
2.什么是进程?
进程是操作系统结构的基础,是一个计算机中正在运行的程序实例。可以分配给处理器并有处理器执行的实体,由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。
3.什么是垃圾回收?什么时候触发垃圾回收?
垃圾回收(GC)是Java语言的一个重要特性,作用是释放不再被使用的内存。
垃圾回收由系统进行管理。在系统认为被需要的时候自动启动一个线程进行处理。
4.如何降低垃圾回收的触发频率?它能保证程序有足够的可用内存吗?
尽量减少垃圾内存,也就是新建对象的数量,可以降低垃圾回收的频率。
垃圾回收机制无法保证有足够的内存。
5.Java中会存在内存泄漏吗?
会出现内存泄露。
一般来说内存泄漏有两种情况。一是在堆中分配的内存,在没有将其释放掉的时候,就将所有能访问这块内存的方式都删掉;另一种情况则是在内存对象已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。第一种情况,在Java中已经由于垃圾回收机制的引入,得到了很好的解决。所以,Java中的内存泄漏,主要指的是第二种情况。
下面给出了一个简单的内存泄漏的例子。在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个List中,如果我们仅仅释放引用本身,那么List仍然引用该对象,所以这个对象对GC来说是不可回收的。代码如下所示:
List list = new ArrayList(10);
for(int i=1;i<100;i++){
Object o = new Object();
list.add(o);
o=null;
}
此时,所有的Object对象都没有被释放,因为变量list引用这些对象。
6.简单描述一下递归?
-
递归作为一种算法在程序设计语言中广泛应用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
-
递归算法一般用于解决三类问题:
1) 数据的定义是按递归定义的。(Fibonacci(斐波那契)函数) 2) 问题解法按递归算法实行(回溯) 3) 数据的结构形式是按递归定义的。(树的遍历,图的搜索) -
下面是使用递归算法实现计算某个整数在二进制中的个数,代码如下所示:
/**
* 计算二进制中1的个数,
* N为奇数,二进制中1的个数等于N/2的个数
* 例子:
* num=13
* 1.getBinary(13/2=6)+1;
* 2.getBinary(6/2=3)+1;
* 3.getBinary(3/2=1)+1+1;
* 4.getBinary(1)+1+1;
* getBinary(1)返回1,与后边两个1相加的结果3
*/
public static int getBinary(int num){
if(num==1)
return 1;
if(0==num%2){//是否为偶数
return getBinary(num/2);
}else{
return getBinary(num/2+1);
}
}
最后
最后,本文章的内容很简单,所以期待在掘金这个平台上我可以从中学习到更多,让我们大家共同努力、共同进步吧(#^.^#)