首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

10 道 Java 泛型面试题

Java中泛型是什么 ? 使用泛型好处是什么?   这是在各种Java泛型面试中,一开场你就会被问到问题中一个,主要集中在初级和中级面试中。...它提供了编译期类型安全,确保你只能把正确类型对象放入集合中,避免了在运行时出现ClassCastException。   2. Java泛型是如何工作 ? 什么是类型擦除 ?   ...简单情况下,一个泛型方法可能会像这样: public V put(K key, V value) { return cache.put(key, value)...给你个提示,LinkedHashMap可以用来实现固定大小LRU缓存,当LRU缓存已经满了时候,它会把键值对移出缓存。...LinkedHashMap提供了一个称为removeEldestEntry()方法,该方法会被put()和putAll()调用来删除键值对。

59.8K256

10 道关于 Java 泛型面试题

1.Java中泛型是什么 ? 使用泛型好处是什么? 这是在各种Java泛型面试中,一开场你就会被问到问题中一个,主要集中在初级和中级面试中。...它提供了编译期类型安全,确保你只能把正确类型对象放入集合中,避免了在运行时出现ClassCastException。 2. Java泛型是如何工作 ? 什么是类型擦除 ?...什么是泛型中限定通配符和非限定通配符 ? 这是另一个非常流行Java泛型面试题。限定通配符对类型进行了限制。有两种限定通配符,一种是<?...简单情况下,一个泛型方法可能会像这样: public V put(K key, V value) { return cache.put(key, value);} ? 6....LinkedHashMap提供了一个称为removeEldestEntry()方法,该方法会被put()和putAll()调用来删除键值对。

68820

07-1透过shell看世界——扩展

ifconfig 命令时,ifconfig 返回结果是多行,可是当我们使用 echo 输出时候,格式发生了变化,如果想要按照命令执行后原格式输出命令替换后结果,可以使用如下方法,如下方法在写脚本时候可能会用到...echo "'ifconfig'" 1.路径名扩展 (1)是什么? 通过使用通配符来实现扩展机制称为路径名扩展。 试试在之前章节使用过一些技术,将会发现它们实际上就是扩展。...用于花括号扩展模式信息可以包含 一个称为前导字符开头部分 和 一个称为附言结尾部分。 花括号表达式本身可以包含一系列逗号分隔字符串,也可以包含一系列整数 或 单个字符。...(1)用法格式 # 包含一系列逗号分隔字符串 {1,2} # 包含一系列整数 或 单个字符 {1..5} # 一系列整数 {a..b} # 一系列单个字符 ① 一系列整数 echo Number...—{1..5} ② 一系列单个字符 echo {Z..A} ③ 一系列逗号分隔字符串 echo {a,b,c} ④ 嵌套 echo a{A{1,2},B{3,4}}b (2)应用 普遍应用是创建一系列文件或者目录

77320

Java泛型详解

在如上编码过程中,我们发现主要存在两个问题: 1.当我们一个对象放入集合中,集合不会记住此对象类型,当再次从集合中取出此对象时,改对象编译类型变成了Object类型,但其运行时类型任然为其本身类型...一提到参数,熟悉就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?...顾名思义,就是类型由原来具体类型参数化,类似于方法变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体类型(类型实参)。...是的,在具体使用时,可以分为泛型接口、泛型类和泛型方法。 自定义泛型接口、泛型类和泛型方法与上述Java源码中List、ArrayList类似。如下,我们看一个简单泛型类和方法定义: ?...假设Box在逻辑上可以视为Box父类,那么//1和//2处将不会有错误提示了,那么问题就出来了,通过getData()方法取出数据时到底是什么类型呢?

51020

C#基础与常用数据结构学习笔记

这里跟随杨老大做了一个小题目,我知道这是他去Microsoft面试一道小题目(看过杨老大《我微软面试经历》的人都知道),就是一个奇偶分家题目:有一个字符串是用空格分隔一系列整数,写一个程序把其中整数做如下重新排列打印出来...:数据放进去就不知道是什么类型了;不能防止非法类型数据放入ArrayList返回给其他函数,会令调用者很困惑。...因为Dictionary中有一个存储键值对区域,采用一个固定算法(散列算法,非常快,可以认为时间复杂度为O(1) )根据key来计算这个kvp存放地址,计算key键值对应该存储地址,键值对放入指定地址即可...讲到这里,老杨又给出了一道面试题:现有1~10共10个整数,已随机放入一个有8个元素数组a[8]。要求找出没有被放入数组那2个数。...注意:程序不用实现自然数随机放入数组过程,测试数据{9,8,5,3,1,10,2,7}。

46430

shell脚本编程之路3

/bin/bash -xv,其他就不用做任何操作了,这是便捷方法. shell切分和提取 在进行切分文件名,提取文件名 与 提取文件扩展名,需要用到几个操作符有:%、%%、#、##。...符号 说明 ${VAR%[通配符]} % 属于非贪婪操作符,他是从右向左匹配最短结果 ${VAR%%[通配符]} %% 属于贪婪操作符,会从右向左匹配符合条件最长字符串 ${VAR#[通配符]} #...属于非贪婪操作符,他是从左向右匹配最短结果 ${VAR##[通配符]} %% 属于贪婪操作符,会从左向右匹配符合条件最长字符串 实际案例1: #示例1.从右向左匹配 :% 和 %% 操作符示例(.../bin/bash #提取文件名或者删除后缀 file_name="text.gif" #从$VAR中删除位于 % 右侧通配符左右匹配字符串,通配符从右向左进行匹配,现在给变量 name 赋值,name...含义:从 $VAR 中删除位于 # 右侧通配符所匹配字符串通配符是左向右进行匹配。

3.3K10

Shell流程控制

Shell流程控制 流程控制:if else语句if语法多行写法语法if 条件 then 命令 fi可以if语句放入一行语......流程控制:if else语句 if语法 多行写法语法 if 条件 then 命令 fi 可以if语句放入一行语法 if 条件; then 命令; fi if else 语法 if 条件 then...运行效果 小结 test命令对整数比较测试 test 整数1 options 整数2 options: lt le gt ge eq ne test命令对字符串比较测试 test 变量1 options...case、in 和 esac 都是 Shell 关键字, esac就是case反写在这里代表结束case 匹配模式: 可以是一个数字、一个字符串,甚至是一个简单正则表达式。...简单正则表达式支持如下通配符 格式 说明 * 表示任意字符串。 [abc] 表示 a、b、c 三个字符中任意一个。比如,[15ZH] 表示 1、5、Z、H 四个字符中任意一个。

2.5K40

MSBuild 中特殊字符($ @ % 等):含义、用法以及转义

TargetFramework> bin\$(Configuration) 比如以下两篇博客列出了一些典型使用场景...(包括添加和删除各种前后缀) 在 csproj 文件中使用系统环境变量值(示例 dll 生成到 AppData 目录下) @ 引用一个集合。...: 在 Target 中获取项目引用所有依赖(dll/NuGet/Project)路径 在制作跨平台 NuGet 工具包时,如何工具(exe/dll)所有依赖一并放入包中 % 引用集合中某一个项某个属性...: 在项目文件 csproj 中或者 MSBuild Target 中使用 % 引用集合中每一项属性 ' 在形成一个字符串时候,会使用到此字符。...和 * 作为通配符使用。一个 * 表示文件或者文件夹通配符,而 ** 则表示任意层级文件或文件夹。

34020

12 Java 泛型使用

对于 Java 5 之前程序员而言,使用集合经常会面临一个很尴尬问题:放入一个种特定类型,但是取出时候全部是 Object 类型,于是在具体使用时候需要将元素强转换为特定类型。...泛型主要有两个好处: ❑ 更好安全性。 ❑ 更好可读性。 语言和程序设计一个重要目标是 bug 尽量消灭在摇篮里,能消灭在写代码时候,就不要等到代码写完程序运行时候。...isEquals(T a, T b) { return a.equals(b); } 泛型通配符 泛型方法到底应该用通配符形式还是加类型参数。...1)通配符形式都可以用类型参数形式来替代,通配符能做,用类型参数都能做。 2)通配符形式可以减少类型参数,形式上往往更为简单,可读性也更好,所以,能用通配符就用通配符。...4)通配符形式和类型参数往往配合使用,比如,上面的 copy 方法,定义必要类型参数,使用通配符表达依赖,并接受更广泛数据类型。

45920

205K+程序员关注过问题:为什么不应该使用Java原始类型?

01、Java 原始类型是什么? 要理解 Java 原始类型是什么,可以先看一下什么是泛型。...List list = null; 其中 list 就是一个泛型,我们通常称之为字符串(String)列表(List),也就是说 list 中只能放字符串类型元素。...List list = null; 从 list 声明当中我们可以对比发现,原始类型没有为容器指定明确元素类型,所以我们可以在容器中放入一个 String,也可以放入一个 Integer,甚至任意类型...因为不用关心放入 List 元素到底是什么类型,想放什么就可以放什么,不要太爽啊! 可当我们想要从 List 中把元素取出来使用时候,可就遇到大麻烦了。...既然原始类型是不安全,那为什么 Java 一直允许使用原始类型呢?并且泛型擦除后仍然是个原始类型呢? 答案很简单、很无厘头、很苍白——为了版本兼容!

48330

泛型基本原理

类型擦除 『类型擦除』概念放在开始进行介绍是为了方便大家初步建立起对于『泛型』一个基本认识,从而对于后续介绍使用方式上会更容易理解。...但是除此之外是,如果构建 ArrayList 实例时使用了泛型语法,那么编译器标记该实例并关注该实例后续所有方法调用,每次调用前都进行安全检查,非指定类型方法都不能调用成功。...这个 add 方法实际上就将一个浮点数放入了整型容器中了,虽然由于类型擦除并不会对程序运行造成问题,但显然违背了泛型设计初衷,容易造成逻辑混乱,所以 Java 干脆禁止泛型协变。...原因也很简单,? 代表不确定类型,即你不知道你这个容器里面放是什么类型数据,所以你只能读取里面的数据,不能瞎往里面添加元素。...具体原因是什么,我们也详细介绍了,大致意思就是,父类容器可以放任意类型元素,而子类容器只能放某种特殊类型元素,如果父类代表了某一个子类容器,那么父类容器就有可能放入非当前子类实例所允许元素进入容器

55800
领券