【2023,学点儿新Java-14】携程面试题:如何看待Java是一门半编译半解释型的语言?| 咨询互联网行业 资深前辈的一些问题 | 附:为什么说ChatGPT的核心算法是...?| GPT-3.5

2023-06-21 10:28:28

前情回顾:

 
其实我们都应该 多去尝试着做自己喜欢的事情,有些事可能在特定的时空下 只有那一次机会,错过了就是永远,没有人“应该”活成什么样子。

 

🎯作者主页: 追光者♂🔥

        

🌸个人简介:
 
💖[1] 计算机专业硕士研究生💖
 
🌟[2] 2022年度博客之星人工智能领域TOP4🌟
 
🏅[3] 阿里云社区特邀专家博主🏅
 
🏆[4] CSDN-人工智能领域优质创作者🏆
 
📝[5] 预期2023年10月份 · 准CSDN博客专家📝  
 

  • 无限进步,一起追光!!!

        

🍎感谢大家 点赞👍  收藏⭐   留言📝!!!

  

🌿本篇从某互联网公司携程的一道Java基础面试题开始,介绍了如何回答Java是一门半编译半解释的语言这一问题,随后附上了近期和某位互联网业内前辈的部分交流记录,相信这应该会对大家有所帮助!此外,结合目前的特点——ChatGPT,分享了关于它的部分知识,这可能会以偏概全,希望大家可以多多理解!

🍄一、如何看待Java是一门半编译半解释性的语言?(携程)

🍑1.1 初学者,会不会这样想?

在这里插入图片描述

由上图,你会不会这样想?

由于Java是先编译,后运行,所有它叫 半编译半解释性语言!

注意,上述这种回答 是不严谨的,准确地说,是错误的哈!

事实上,在得到.class字节码文件后,Java有两种执行方式,一种是逐行去“翻译”执行,即解释型;另一种方式是针对热点代码,提前翻译为机器指令,后面在调用时直接去执行机器指令就OK了!(JIT 即时编译器)这样其性能会更好。

🍑1.2 解答

Java一般被称为 半编译半解释型语言,也就是说Java在运行前 需要经过编译过程,将源代码 转换为字节码文件,然后由JVM解释执行字节码。

具体来说,Java的编译过程分两步:首先将Java源代码编译成class文件,也就是字节码文件,然后由JVM执行字节码文件进行运行。

虽然Java的字节码 需要在JVM中解释执行才能运行,但JVM中 内置了即时编译器(Just-In-Time Compiler,JIT),JIT可以将部分常用的字节码编译成本地机器代码,从而提高Java程序的性能。因此,Java既有编译型语言的优点(高效、稳定、安全),也有解释型语言的灵活性和可移植性。

Java采用半编译半解释的方式运行,既保留了编译型语言的优点,也具有解释型语言的灵活性和可移植性,这也是它成为了一门流行语言的原因之一。

在这里插入图片描述

 

🍄二、附:资深程序员(业内前辈) 谈学习方法和路线

最近向一个资深前辈提问了一些问题。觉得可能会对大家一些帮助,于是记录一下!

🍑2.1 学习方法,是固定的吗?

💧2.1.1 从认知上来讲,你觉得“好程序员”的标准是什么?

 

  • 是不是敲过多少行代码?

  • 是不是调过多少Bug?

这就意为着好程序员吗?

这是个很好的问题。从我的经验来看,“好程序员”的标准远不止于敲多少行代码和调多少Bug,这些只是衡量他们工作量和技术能力的指标。以下是我认为“好程序员”的标准:

  1. 编写高质量的代码:好程序员编写的代码 不仅要实现功能还需易于维护、健壮、高效、可扩展、可重用、易于测试等,符合软件工程规范

  2. 良好的学习和沟通能力好程序员 始终保持学习的状态,保持对新技术的掌握,能够与团队成员和用户有效沟通交流,从中获取所需支持和反馈。

  3. 团队合作和领导能力:好程序员 能够有效工作于团队环境中,并协调 完成团队项目。如果加入项目管理方面的工作,好程序员 能够领导和支持团队成员,协调团队合作,制定管理方案等。

  4. 潜力和责任心:好程序员 不仅会应对眼前的任务,也会对项目的 长远规划和未来发展进行战略思考,积极承担责任,带领其他成员的成长。

  5. “好程序员”是指有远见、责任心强、懂得团队合作、善于学习和沟通,能够写出高质量代码并不断提高质量的人,这样的人才能在IT行业中获得成功。

在这里插入图片描述

 

💧2.1.2 衡量学的好坏的标准是“编码能力”吗?如何提高编码能力?——多敲代码吗?

编码能力只是学习好与坏的表现之一,它并不能完全代表程序员的素质和能力。

提高编码能力是提高学习的一部分,但是学习编码的过程 是需要多方面的支持和帮助。除了多敲代码之外,还应该:

  1. 勤于思考:编程 不是简单地输入代码,而是需要思考、分析、优化,需要 时常自我反思,发现自己的问题与不足之处,并思考如何改进。

  2. 学习和掌握算法和数据结构算法和数据结构 是编码能力的基础,因此学习和掌握 算法和数据结构非常重要。

  3. 关注技术发展和新技术:互联网时代发展迅速,技术更新换代也很快。优秀的程序员 需要关注技术的发展,掌握新技术,并尝试 将其应用到实际生产环境中

  4. 阅读源代码:通过学习他人优秀的编码风格和代码实现方法,提高自己的编码能力。同时,代码审视 是发现代码中缺陷的好方法。

  5. 多敲代码 只是提高编码能力的一部分,还需要有系统地学习、思考、应用,并不断总结和完善 代码实现方法

 

🍑2.2 可以分享一下您最初学习敲的代码吗?

哈哈!事实上,没有谁(大家其实都是)从HelloWorld进入的这个“新世界”!

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

这个程序的功能非常简单,它只是输出“Hello World!”这个字符串。但是这个小程序却包含了许多Java编程中的常用知识点,例如:

  1. 类定义:用public class声明一个类,并定义类名HelloWorld。
  2. 方法定义:用public static void main声明一个方法,方法名为main,参数为字符串数组String[] args。
  3. 输出语句:使用System.out.println()方法输出字符串到控制台。

尽管此程序功能很简单,但可以视作Java开发者 基本的语法能力。对于中级Java程序员来说,代码长度 不一定决定其水平高低,最重要的是 代码的功能合理、内部逻辑清晰、可读性强,并且可以应对复杂业务场景

 

(⊙o⊙)…!不愧是前辈!与前辈还聊了一些内容,我将会在后续的文章中间断分享,希望能够对大家有些帮助!

 

🍄三、附:为什么说ChatGPT的核心算法 是 RL(强化学习)和 RL(无监督学习)

🍑3.1 “预训练的无监督学习”

我觉得 这个问题不能很容易地答的特别好。

ChatGPT是使用了一个基于预训练的无监督学习方法,也就是大家常说的"无监督预训练"。

这种方法 通常依靠大规模数据的自监督学习来训练模型,在无需大量标记的情况下也能达到不错的效果,而且 可以利用多种自然语言处理任务来协同训练,从而提高模型的性能。

与强化学习不同,无监督学习是一种自动学习范式,不需要外部标签 进行监督,而是从大量的无标签数据中 自学习模型。ChatGPT算法 使用了大量的自然语言数据进行训练,从而能够 理解自然语言规则和语法结构,并能够生成类似自然语言般的文本。

ChatGPT实际上 可以理解为一种语言模型,因为它能够在不进行特定任务训练的情况下 对自由文本的生成和解释做出响应。

ChatGPT的核心算法是基于预训练的无监督学习,利用语言模型 和大数据集自我训练、自我监督,从而实现对自然语言的理解和生成。

 

🍑3.2 关于 GPT-3.5-turbo

可以说,ChatGPT 是基于GPT-3.5-turbo算法的智能AI,GPT 指的是Generative Pre-trained Transformer的缩写,是OpenAI开发的自然语言处理模型。

GPT算法是一种基于Transformer架构的预训练语言模型,它通过 大规模训练文本数据 来生成下游任务所需的特定任务模型。GPT算法具有非常强的语言生成能力和上下文感知能力,可以进行文本分类、语言翻译、文本生成等任务。

至于GPT-3.5-turbo,则是在原有GPT-3基础上进一步优化和改进,具有更快的训练速度和更高的精度。

通过训练大规模的语料库,GPT-3.5-turbo算法 具有先进的自然语言理解和生成能力,可以应用于 各种自然语言处理任务和人工智能应用。而ChatGPT是构建在 这个基础上的文本智能AI,专门用于智能对话 和 自然语言生成任务。

 


 

🍒 热门专栏推荐

 

持续创作优质好文ing…✍✍✍

 

记得一键三连哦!!!

 

求关注!求点赞!求个收藏啦!

在这里插入图片描述

更多推荐

Android 查看按键信息的常用命令详解

Android查看按键信息的常用命令详解文章目录Android查看按键信息的常用命令详解一、主要命令:二、命令详解1、getevent2、getevent-l3、dumsysinput4、catXXX.kl4、cat/dev/input/eventX5、getevent其他命令6、inputkeyeventXX三、简单

【性能测试】JMeter:集合点,同步定时器的应用实例!

一、集合点的定义在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。通过插入集合点可以较真实模拟多个用户并发操作。(注意:虽然通过加入集合点可以约束请求同时发送,但不能确保请求同时到达服务器,所以只能说是较真实模拟并发)在JMeter中可以

Android SurfaceFlinger导读(03)MessageBase

该系列文章总纲链接:AndroidGUI系统之SurfaceFlinger系列文章目录说明:关于导读:导读部分主要是方便初学者理解SurfaceFlinger代码中的机制,为后面分析代码打下一个更好的基础,这样就可以把更多的精力放在surfaceFlinger的业务逻辑分析上。关于代码分支:以下代码分析均在androi

用Jmeter进行压测详解

简介:1.概述一款工具,功能往往是很多的,细枝末节的地方也很多,实际的测试工作中,绝大多数场景会用到的也就是一些核心功能,根本不需要我们事无巨细的去掌握工具的所有功能。所以本文将用带价最小的方式讲解如何快速上手使用jmeter来进行压测。JMeter,一款接口测试工具,是Java程序,需要JDK环境,建议使用JDK8或

GaussDB技术解读系列:高级压缩之OLTP表压缩

8月16日,第14届中国数据库技术大会(DTCC2023)在北京国际会议中心顺利举行。在GaussDB“五高两易”核心技术,给世界一个更优选择的专场,华为云数据库GaussDB首席架构师冯柯对华为云GaussDB数据库的高级压缩技术进行了详细的解读。GaussDB高级压缩全景高级压缩是面向业务全场景的数据库压缩解决方案

优橙内推天津专场——5G网络优化(中高级)工程师

北京电旗通讯技术股份有限公司北京电旗通讯技术股份有限公司(以下简称“电旗”)成立于2001年,是卓越的移动网络工程服务和创新网络智能解决方案供应商,为一级设备供应商,提供包括无线网络及核心网络的规划设计、优化、维护、培训认证及其他相关服务。电旗的总部设在北京,分公司设在北京、台湾、马来西亚、印度和印度尼西亚等四个地区,

《Docker 容器化的艺术:深入理解容器技术》

🌷🍁博主猫头虎(🐅🐾)带您GotoNewWorld✨🍁🐅🐾猫头虎建议程序员必备技术栈一览表📖:🛠️全栈技术FullStack:📚MERN/MEAN/MEVNStack|🌐Jamstack|🌍GraphQL|🔁RESTfulAPI|⚡WebSockets|🔄CI/CD|🌐Git&Versio

Python Functions-函数

目录创建函数调用函数参数还是自变量?参数数量任意参数,*args关键字参数任意关键字参数,**kwargs默认参数值将列表作为参数传递ThepassStatement递归函数是一个只有在被调用时才运行的代码块。可以将称为参数的数据传递到函数中。函数可以作为结果返回数据。创建函数在Python中,函数是使用def关键字定

线程池:神秘的“轻量级线程”

当前我们的多线程部分已经学习了几个代码案例:1.单例模式2.阻塞队列->生产者消费者模型3.定时器4.线程池而线程存在的意义就是,使用进程来实现并发编程会“太重了”,创建和销毁进程都会比较耗资源。但是线程会更加高效。此时,使用多线程就可以在很多时候代替进程来实现并发编程了。但是随着并发程度的提高,随着我们对于性能要求的

【跟小嘉学 Rust 编程】二十九、Rust 中的零拷贝序列化解决方案(rkyv)

系列文章目录【跟小嘉学Rust编程】一、Rust编程基础【跟小嘉学Rust编程】二、Rust包管理工具使用【跟小嘉学Rust编程】三、Rust的基本程序概念【跟小嘉学Rust编程】四、理解Rust的所有权概念【跟小嘉学Rust编程】五、使用结构体关联结构化数据【跟小嘉学Rust编程】六、枚举和模式匹配【跟小嘉学Rust

STM32H5开发(4)----开发板介绍

STM32H5开发----4.开发板介绍套件概述样品申请特征系统控制和生态系统访问功能示意图系统框图跳线设置开发板原理图套件概述STM32H503RBTx_LQFP64是STM32H5系列微控制器的一款出色评估套件,它采用了先进的40nm工艺制造,为开发者提供了卓越的性能和能效。主频高达250MHz的Arm®Corte

热文推荐