java程序员面试宝典(1)

三个鸡蛋(玻璃球、围棋子)确定楼层问题公式推导 (1)题目是这样的:一个100层的大厦,你手中有两个相同的玻璃球。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。     这里的最优策略指的是在这种策略下无论哪个临界层面在第几层,测试的次数最少。我一开始就是把题意理解错了,给了一个非最优解,后来看了CU那的讨论后才明白了是用动态规划来做,并可以把题目扩展为n层大厦用k个玻璃球来测试。 阅读详情

1.      变量及其作用范围

尽管定义在{}代码块里面的变量是不为外面所见的,但代码块中不可以定义与外部变量名一样的变量,如:

           publicstatic void main(String[] args){

                    intI = 0;

                    {

                             IntI;//会产生编译错误

                    }

           }

Java变量可以分为:静态变量、成员变量和局部变量3种。静态变量指的是在类中用static修饰的变量,它的生存周期是由类来决定的。成员变量则是在类中没有用static修饰的变量,它的生存周期由对象决定。局部变量则是定义在方法里的变量、方法的参数或代码块里定义的变量,它的作用范围用大括号{}来界定。

2.      Java变量分哪两大类数据类型:Java的变量分为基本数据类型和引用数据类型。对象一般是通过new语句创建出来的,保存在堆空间中。

3.      如何理解java中的装箱和拆箱:从java5.0开始,有一种自动装箱和拆箱的功能,就可以不必显示的进行类型转换,系统会自动的按照需要进行数据类型的转换。基本数据类型对应的包装类均在java.lang包中。Java的装箱和拆箱指的是基本数据类型和包装类型的自动相互转换,这个自动转换过程是在编译阶段。

4.      Java引用和C++指针区别:(1)类型:引用,它的值是地址的数据元素,java封装了地址,可以转成字符串查看,长度可以不关心。而c++指针是一个装地址的变量,长度一般是计算机字长。(2)所占内存:引用声明时没有实体,不占空间。C++指针如果声明后会用到才会赋值,如果用不到不会分配内存。(3)类型转换:引用可以类型转换,可能不成功运行抛出异常。C++指针只是个内存地址,指向哪里。(4)初始值:引用初始值为java关键字null。C++指针是int,不初始化它的值就是不固定的,这很危险。(5)计算:引用不可以计算。C++指针是int,可以计算,如++或--,故经常用指针代替数组下标。(6)控制:引用不可以计算,故它只能在自己程序中,可以被控制。C++指针是内存地址,可以被计算,所以它有可能指向一个不属于自己程序使用的内存地址,对自己程序来说不容易控制。(7)内存泄露:引用不会产生内存泄露。C++指针容易产生内存泄露,所以程序员要小心使用及时回收。(8)作为参数:java方法参数只是传值。C++用指针参数相当于地址传递。总的来说,java引用更方便安全一些,但没C++指针那么灵活。

5.      请简述java中的main()方法:main()方法是java程序执行入口,它是一个定义在类中的、公开的、静态的、无返回的、参数作为一个字符串数组的方法,它的参数args与执行参数一一对应。

6.      Java中equal和==的区别是什么:“==”运用在基本数据类型的时候,通过比较它们实际的值来判定是否相同;而用于比较引用类型的时候,则比较两个引用的地址是否相等,也就是是否指向同一个对象。Equal方法是java.lang.Object的方法,也就是所有的java类都会有的方法。它可以被程序员覆盖重写,通过自定义的方式来判定两个对象是否相等(java.lang.String类是一个特殊的类,它不可以被继承,它的equal()方法用来比较字符串的字符序列是否完全相等。)

7.      Java三元运算符:后两个表达式的返回类型要统一。

8.      Java中的注释:有三种,行注释、块注释、文档注释。再算上Annotation就是4种,它与其他注释本质的区别就在于它会进入到编译层,并对程序结果产生影响。(如@Override该注释声明该方法是用于覆盖父类中的方法等。)

9.      类和对象有什么区别:java的类通过class关键字进行定义,它代表了一种抽象的集合,在它的里面可以定义各种属性和方法,它们代表了每个类实例的特定的数据和动作。Java虚拟机对类只加载一次,对它的静态成员也只加载一次。

对象,指的是某一个特定抽象的实例,它属于某一种类型,也就是对象是通过类来创建的。它必须从属于某一个类,通过new关键字进行创建,它代表一个特定类型的实例,对象可以被多次创建。简言之,类是一种抽象,而对象是类的实现。

10.  java中如何使用继承来重用代码:java采用的是单继承制,使用extends关键字。通过继承以后,子类就拥有了父类除去私有成员以外的所有成员,从而达到代码重用。在继承过程中,可以通过方法的覆盖来实现多态,让子类拥有自己独特的方法实现方式。(java程序中所有类都继承自java.lang.Object类,它有9个方法,所以所有java类都包含这9个方法)

11.  java中静态成员的特点:(1)在类加载的时候,就进行创建和初始化或执行代码。(2)对于一个类来说只有一份。(3)类的所有实例都可以访问到它们。

12.  简述java派生类中的构造方法如何为父类传递参数:(注:super()的使用必须放在子类构造方法的第一行。如果调用的是父类的默认的无参数构造方法,则可以不必显示地使用super())。

简述下内部类的实质是什么(java通过内部类加上接口,可以很好的实现多继承的效果。)?定义在类内部的类就叫做内部类。(1)静态内部类:它相当于外部类的静态成员一样,使用static修饰的内部类;在外部类加载的时候,静态内部类也随之加载。静态内部类相对于外部类来说,仅仅是包含关系,缩小了命名空间,完整类名中多了一个外部类名称,本质上是两个独立的类,JVM也不知道他们有两个有包含关系。(2)成员内部类:无static修饰。它相当于外部类普通成员一样,隶属于外部类的具体对象,在定义它的时候,需要先创建外部类对象,再创建它的实例。(3)局部内部类:定义在一个方法体中,它往往仅能作为方法短暂的使用,只能访问方法中final修饰的局部变量或任意访问外部类对象的成员变量。(4)匿名内部类:定义在方法体中,工作本质与局部内部类类似。(class文件是按照匿名内部类排列顺序来进行的。)

package com;

public class Test {

       static int a = 0;

       int b = 0;

       static classInner1{

              public static void print(){

                     System.out.println("这是静态内部类");

              }

       }

       class Inner2{

              public voidprint(){

                     System.out.println("这是成员内部类");

              }

       }

       public void adc(){

              int aa = 0;

              final int bb =1;

              class MyLocal{

                     public voidprint(){

                            System.out.println("这是局部内部类"+bb+a+b);

                     }

              }

              new Inner2(){ //注意类名Inner2必须是定义过的。

                     public voidprint(){

                            System.out.println("这是匿名内部类"+bb+a+b);

                     }

              }.print();

              new MyLocal().print();

       }

       public static void main(String[] args) {

              Test test = new Test();

              Test.Inner1.print();

              Test.Inner2 i = test.new Inner2();

              i.print();

              test.adc();

       }

}

注意这边局部与匿名内部类命名

13.  float和double的取值范围各是多少:float型3.4E+10^(-38)~3.4E+10^(38)。Double型1.7E+10^(-308)~1.7E+10^(308)。

14.  实型与整型的相互转换:double d2 =12;d2+123,字面量123在相加之前有一个隐式转换成double型,切记。

15.  Java中使用反斜杠“\”表示转义字符。

16.  Stringa = “a”;String b = “b”;String c = “c”; String d = “d”;String abcd = a+b+c+d;上述代码一共创建了7个String对象。Java中如果有大量拼接字符串的需要,应该使用StringBuffer和StringBuilder类,它们可以避免不必要的String对象的产生,提高程序性能!StringBuffer线程是安全的。StringBuild性能更好,因为不是线程安全的。

17.  如何输出反转过后的字符串:(1)利用字符串存储字符数据的原理,取出它的char数组,重排。如:s.charAt(i)。(2)生成StringBuffer对象,直接使用StringBuffer的reverse()方法。如:StringBufferbuff = new StringBuffer(字符串);

18.  如何使用指定的字符集创造String对象:如String c = new String(a.getBytes(),”UTF-8”);

19.  Int[]arr = new int[]{1,3,5};定义一个int数组变量。其类名可以如此获取:arr.getClass().getName();

20.  如何拷贝数组数据:深度拷贝:int[] arr = new int[]{1,3,5};int[] arr2 =new int[3];System.arraycopy(arr,0,arr2,0,arr.length);

告别偏移地址!用C# S7PLUS驱动读写西门子S7-1500符号地址(TIA Portal V17+环境配置) 本文详细介绍了如何在TIA Portal V17+环境中使用C# S7PLUS驱动读写西门子S7-1500 PLC的符号地址,告别传统的偏移地址方式。通过配置OpenSSL、集成S7PLUS驱动库,以及实战案例展示符号地址的读写方法,显著提升代码可读性和维护效率。文章还涵盖了环境准备、高级配置及常见问题解决方案,助力工业自动化开发者实现更高效的PLC通讯。 阅读详情

相关推荐

从婴儿学步到工业级应用:VLA的‘隐式标定‘原理通俗图解

本文深入解析VLA(Vision-Language-Action)模型的'隐式标定'原理,通过类比婴儿学习机制,揭示其如何替代传统手眼标定技术。文章对比了工业机器人传统标定与VLA数据驱动方法的差异,并可视化神经网络注意力机制,展示其在空间关系编码上的突破性进展。最后探讨了VLA在工业应用中的优势与混合架构解决方案。

pz890123456的博客 324

Java程序员面试宝典1-10

Java  http://pan.baidu.com/s/1jGkeHwE

sck940210的专栏 929

淘特App x-sign参数逆向实战:从抓包到算法定位

本文详细解析了淘特App的x-sign参数逆向过程,从抓包分析到算法定位,涵盖了使用jadx-gui进行静态分析、Frida动态Hook验证以及Native层算法还原等关键技术。文章重点介绍了x-sign参数的生成机制及其在阿里系应用中的安全防护策略,为逆向工程师提供了实用的调试技巧和对抗策略。

5b6n7m8的博客 229

java程序员面试宝典1

java程序员面试宝典

xiantouxu的博客 1482

STM32G474 FDCAN滤波器配置与多ID接收实战

本文详细介绍了STM32G474 FDCAN滤波器配置与多ID接收实战,重点解析了掩码过滤和范围过滤两种模式的工作原理及配置步骤。通过实际项目案例展示了如何高效配置多个滤波器实现多ID报文接收,并提供了接收FIFO配置与中断处理的优化策略,帮助开发者提升CAN通信系统的稳定性和实时性。

happy2的博客 875

新手避坑指南:从GEO数据库下载单细胞测序数据的5个关键步骤(附实操截图)

本文为单细胞测序数据下载新手提供5个关键避坑步骤,涵盖数据搜索准备、样本量评估、文件选择决策、元数据诊断及高效下载技术。通过实操截图和代码示例,帮助研究者快速锁定GEO数据库中的优质单细胞测序数据,避免常见错误。

weixin_30296405的博客 672

JAVA程序员面试笔试宝典1

1.为什么Java中有些接口没有任何方法? 这些没有任何方法声明的接口又被称为标识接口,标识接口对于实现它的类没有任何语义上的要求,它仅仅充当一个标识的作用,用来表明它的类属于一个特定的类型。 2.java中的clone方法有什么作用? Object类提供了一个clone()方法,这个方法的作用是返回一个对象的复制。返回的是一个新的对象,而不是一个引用。 使用clone()方法的步骤: ...

weixin_30301183的博客 94

NVIDIA驱动装好了,Gazebo为啥还是卡?手把手教你用optirun搞定GPU加速

本文详细解析了NVIDIA驱动安装后Gazebo仍卡顿的原因,并提供三步精准诊断与GPU加速实战方案。通过optirun快速启用GPU加速,解决OpenGL与显示服务器的配置问题,显著提升仿真性能。适用于ROS、PX4等开发环境,帮助用户充分利用显卡性能。

weixin_30379531的博客 465

java程序员面试笔试_JAVA程序员面试笔试宝典1

1.为什么Java中有些接口没有任何方法?这些没有任何方法声明的接口又被称为标识接口,标识接口对于实现它的类没有任何语义上的要求,它仅仅充当一个标识的作用,用来表明它的类属于一个特定的类型。2.java中的clone方法有什么作用?Object类提供了一个clone()方法,这个方法的作用是返回一个对象的复制。返回的是一个新的对象,而不是一个引用。使用clone()方法的步骤:实现clone的类首...

weixin_35143502的博客 186

SY6982C 7.4V锂电池1A充电模块原理图设计,已量产

在手持设备、便携工具与小型无人机等场景中,7.4V(2S)锂聚合物电池的应用愈发广泛。这类电池对充电系统的安全性、效率与兼容性提出了明确要求:需支持 USB 5V 输入、1A 安全充电,同时具备多重保护机制。本文将结合一款基于 SY6982C 的充电原理图,深入解析其电路设计与技术亮点。

不脱发的程序猿 362

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1275

Java程序员面试宝典笔记记录(1~3章概括)

文章目录导言求职前重要的两点求职者注意的几个方面:挑选offer考虑5点后台开发人员面试需要补充和阅览的书籍需备技能方面需要阅读的书籍(针对Java)结语 导言   本博文是对于何昊出版的《Java程序员面试宝典》一些笔记记录和总结,删除过于庞大的内容,保留一些精华部分,1-3章内容包含量不多,有兴趣去买这本书看一看吧。 求职前重要的两点   认清自我,保持强烈求知欲。 求职者注意的几个方面: ...

YuYunTan的专栏 727

YOLOv12创新改进 | 全网独家创新篇、小目标检测改进 | AAAI 2025 | 引入HS-FPN中的HFP和SDP创新点,从频域增强小目标特征,淘汰FPN进行升级,助力YOLOv12有效涨点

本文提出了HS-FPN(高频和空间感知特征金字塔网络),通过HFP(高频感知)模块增强小目标特征,SDP(空间依赖感知)模块捕获像素间空间依赖关系。实验在AI-TOD等小目标数据集上验证了该方法的有效性,相比FPN显著提升检测性能。文章详细介绍了HS-FPN的网络结构、核心代码实现及在YOLOv12中的应用方法,并提供多种改进版本的yaml配置文件,为小目标检测任务提供了有效的解决方案。

Ai缝合怪、助力小伙伴高效发论文 338

JAVA程序员面试宝典1

1、面向对象的特征有哪些方面 (1).抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象就是针对对象的行为特征;数据抽象就是针对对象的属性 (2).继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提...

iteye_19399的博客 120

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java最全【Spring Boot 7】RabbitMQ基础知识总结(1),java程序员面试宝典pdf

一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

2301_82242779的博客 1080

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

阿里程序员给我一份Java笔、面试宝典,看目录的那一刻,我傻了!(1)

小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)

2401_83977626的博客 347

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【代码片-1】 java程序员面试宝典笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 [java] view plain copy 1:JDK与JRE  JDK:JAVA Development Kit,  java开发工具包; 包括各种类库和工具,当然也包括JRE  JRE:JAVA Runtime Environment,java程序运行环境,包括JAVA类库的class文件和JVM  

qq_36090419的博客 387

java程序员面试笔试宝典8.1链表

1.如何实现单链表的增删操作 单链表:可以用任意一组存储单元来存储单链表中的数据元素(存储单元可以是不连续的) 除了存储每个数据元素ai的值外,还必须存储指示其直接后继元素的信息 这两部分信息组成的数据元素ai的存储映像称为结点。 n个结点在一块被称为链表 当结点只包含其后继结点的信息的链表就被称为单链表。 java中定义如下的数据类来存储结点信息 class Node{ Node ...

m0_37301141的博客 293

Java程序员:面试字节跳动被问算法 多亏我扛下来了(1),牛客java面试宝典

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。道路是曲折的,前途是光明的!网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84023787的博客 870

程序员面试防坑宝典,狂刷1个月Java面试题,看这一篇就够了

前言 最近一段时间发现经常看到很多人,对Spring源码比较感兴趣,日常开发中,无论你做什么什么项目,大部分都离不开Spring生态的那一套东西,所以很多人对Spring底层源码实现很感兴趣,但是有些从来没有接触过源码的开发者,在看Spring源码的过程中确实及其难受的,为什么,大部分人看源码基本都是debug一点一点去看的,最后发现,越追越离谱,越追越深,到最后都追到JDK源码了,也没有明白是什么意思! 对于学习源码,我的看法是,先去完全的熟悉它的用法,想一下如果让你来实现,你会怎么实现!有了这些想法之后

m0_57501637的博客 176

《Java程序员面试宝典》读书笔记1

今天读书发现一个很有趣的问题 请问以下程序会输出什么?  public class Test2 {    public static void main(String[] args) {      int j = 0;      for (int i = 0; i < 100; i++) {...

weixin_30807677的博客 130

java程序员面试笔试宝典4.1基本概念

4.1 基本概念 4.1.1 Java语言有哪些优点 1)Java语言为纯面向对象的语言。 2)平台无关性。一次编译,到处运行。 3)Java提供了很多内置的类库。如对多线程的支持,对网络通信的支持,垃圾回收器。 4)提供了对web应用开发的支持。例如Applet,Servlet,Jsp;Socket,RMI 5)具有较好的安全性和健壮性。如数组边界检测和Bytecode校验等;强类型机制...

m0_37301141的博客 359

2024最新“Java突击宝典”,Java程序员面试升职加薪必备(1)

一致性算法(Paxos+Zab+Raft+NWR+Gossip+一致性Hash)数据结构(栈+队列+链表+散列表+排序二叉树+红黑树+B树+位图)Java算法(二分查找+排序算法+回溯算法等)4-5年:提升技术广度与深度。1-3年:合格的程序员。

2501_90256160的博客 218

java初级程序员面试题目,阿里P8大牛独家打造586页Java面试宝典(1),字节跳动大神讲座

无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。针对以上面试技术点,我在这里也做一些分享,希望能更好的帮助到大家。一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

ghfgjfg679的博客 403

太惊艳了!Alibaba内部疯传的“Java突击宝典”,程序员升职加薪必备!

前言 Alibaba作为一线互联网公司的代表,是大部分程序员梦寐以求的工作场所,确实大厂出来的程序员,其背景也更值钱,含金量也会更高。实际上,Alibaba程序员早已成为行业内学习的榜样和标杆,但实际上光鲜的背后付出的血汗是我们没看到的。那么阿里程序员平常都是怎么学习的呢? 今天就讲讲让我们一众菜鸡惊艳到的“Java突击宝典”,这份宝典在Alibaba内部流行已久,适合各个年限的程序员来学习,它主要将需要学习的技术栈分为了三个阶段: 0-1年开发经验(夯实基础):Java基础+并发编程+JVM基础+设

gp0001111的博客 207

Java开发面试问题,2021网易Java高级面试题及答案,实战案例

前言 大厂面试真题向来都是各大求职者的最佳练兵场,而今天小编带来的便是“HUAWEI”面经!这是一次真实的面试经历,虽然不是我自己亲身经历但是听当事人叙述后便会深有同感(因为我朋友差点就与offer擦肩而过了,总共4面技术5面HR,真的好艰难)。为此,我也将这面经整理出来分享给每位程序员(媛)朋友做一个参考,可知“HUAWEI”在Java开发工程师招聘中有哪些技术性考察和倾向! 如何学习TCP/IP? 《TCP/IP核心解读》是一份介绍互联网核心协议TCP/IP知识的科普性读物,内容不仅包括TCP/IP的

m0_56662269的博客 205
上一篇: 创建EJB
下一篇: linux鸟哥私房菜(1)
xflame
博客等级 码龄16年 7粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值