• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

备战2024秋招面试题-对比Java、Go和Python

武飞扬头像
秦 羽
帮助1

前言: \textcolor{Green}{前言:} 前言:

💞快秋招了,那么这个专栏就专门来记录一下,同时呢整理一下常见面试题
💞部分题目来自自己的面试题,部分题目来自网络整理

学习目标:

  • 简历上写着Java、Python、Golang,请对比一下三种语言。
  • 面向对象的特征

面试题:

对比Java、Python、Golang三种语言

  • Java

    1. 领域:Web开发、移动开发、企业应用开发和大数据等领域
    2. 优点:跨平台、面向对象、稳定可靠、开发效率高、安全性好、丰富的第三方库和框架。
    3. 缺点:性能一般,代码量大
  • Python

    1. 领域:机器学习、科学计算、Web开发、数据分析等领域
    2. 优点:简洁易学、丰富的第三方库和框架、多用途、可读性强、适合快速原型开发
    3. 缺点:性能相对较慢、不适合大规模开发、GIL全局解释器锁的存在会影响多线程编程
  • Golang

    1. 领域:高并发、分布式系统、网络编程、云计算等领域
    2. 优点:高并发
      编译时间快:相对于Java和C 的编译速度来说,Go语言的快速编译时主要的效率优势。
      生态系统强大:面向Redis、Rabbit MQ等库,有强大的工具支持。
      内存使用低
      简洁易学
      开发效率高
    3. 缺点:类型系统相对简单、生态系统相对不完善、学习曲线较陡峭

参考连接
https://blog.csdn.net/a772304419/article/details/129516817
http://www.guoxiaolong.cn/blog/?id=9855

说一下面向对象语言的特征,具体体现在哪些方面

面向对象的特征包括封装、继承、多态、抽象

  1. 封装:将客观的事务抽象成类,每个类对自身的数据和方法进行保护。类可以把自己的数据和方法只让可信的类或对象操作,对不可信的类进行信息隐藏。
  2. 继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,他提供了一种明确的表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类,而原始类称为新类的基类。派生类可以从它的基类那里继承方法和实例变量,并且派生类可以修改或者增加新方法使之更适合特殊的需要。
  3. 多态:多态是指允许不同类对象对同一消息作出响应。多态包含参数化多态和包含多态。多态语言具有灵活、抽象、行为共享、代码共享等优势,解决了应用程序函数同名等问题。
  4. 抽象:抽象就是忽略一个主题中与目前当前目标无关的那些方面,以便充分的注意和当前目标有关的方面。抽象并不打算了解所有问题,而是选择其中一部分,暂时不用部分细节。抽象包括两方面:过程抽象、数据抽象。

多态的实现

方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

  1. 方法的重载(overload)

    • 概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同。
    • 特点: “两同一不同”:
      • 同一个类、相同方法名
      • 参数列表不同:参数个数不同,参数类型不同
    • 可以有不同的访问修饰符。
    • 可以抛出不同的异常。
  2. 重写(override)

    • 重写发生在子类和父类之间,重写要求子类被重写方法与父类被重写方法和相同的参数列表
    • 重写发生在子类与父类之间
    • 参数列表必须完全与被重写的方法相同
    • 返回的类型必须一直与被重写的方法的返回类型相同
    • 访问修饰符的限制一定要大于被重写方法的访问修饰符
    • 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常,但子类方法可以不抛出异常
    • 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
    • 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
    • 方法被定义为final不能被重写,可以重载

老规矩,面试题结束。来道算法题解解馋

算法题:

题目来源: \textcolor{blue}{题目来源: } 题目来源: 234. 回文链表
等级:简单 \textcolor{OrangeRed}{等级:简单} 等级:简单

👉题目描述
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false

示例 1:

``学新通

输入:head = [1,2,2,1]
输出:true

示例 2:
学新通

输入:head = [1,2]
输出:false

提示:

  • 链表中节点数目在范围[1, 105] 内
  • 0 <= Node.val <= 9

👉代码编写

  1. 将链表的值复制到数组列表中
  2. 使用双指针法来判断是否为回文

👉👉方法1

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public boolean isPalindrome(ListNode head) {
        List<Integer> res = new ArrayList<>();

        ListNode current = head;
        while (current != null) {
            res.add(current.val);
            current = current.next;
        }

        int front = 0;
        int last = res.size() - 1;
        while (front < last) {
            if (!res.get(front).equals(res.get(last))) {
                return false;
            }
            front  ;
            last--;
        }
        return true;
    }
}
学新通

完成?

今天结束。之前学习的明白了吗?
  • 简历上写着Java、Python、Golang,请对比一下三种语言。

  • 面向对象的特征

  • 算法:回文链表

  • 下一次讲讲 Vue 框架的原理是什么?

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfibhb
系列文章
更多 icon
同类精品
更多 icon
继续加载