在你认为Java与其他(你所了解的)语言相比,如何?

122 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

作为Java新入行的小女生,希望在我加入掘金的这段时间,可以向各位大佬学习更多知识,也可以和同为新手的各位共同进步!!!O(∩_∩)O哈哈~

那么,在你认为Java和其他语言相比,有什么优点和缺点呢?在我认为,每一件事物都不是完美的,优点和缺点是共存的,如若各位亲有想要的表达的,可以在评论下面留言呀,也可以让我多学习一些的嘞^_^

在加入掘金的最开始,也是这第一天,那就给大家一些我收集的一些面试题,大家看一下,可不要喷我哟(^▽^)

1.简述TCP/UDP协议的区别?

如下表所示:

比较项TCPUDP
是否可连接面向连接面向非连接
传输可靠性可靠地不可靠的
应用场合传输大量的数据少量数据
速度

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);
    }
}

最后

最后,本文章的内容很简单,所以期待在掘金这个平台上我可以从中学习到更多,让我们大家共同努力、共同进步吧(#^.^#)