当前位置: 首页 > news >正文

建设银行行号网站查询是什么意思软件前端主要做什么

建设银行行号网站查询是什么意思,软件前端主要做什么,建筑网挂兼职,网址转换成二维码1.Java接口和抽象类的区别#xff1f; 接口 接口中不能定义构造器 方法全部都是抽象方法#xff0c;JDK8提供方法默认实现 接口中的成员都是public的 接口中定义的成员变量实际上都是常量 一个类可以实现多个接口 抽象类 抽象类中可以定义构造器 可以有抽象方法和具体… 1.Java接口和抽象类的区别 接口 接口中不能定义构造器 方法全部都是抽象方法JDK8提供方法默认实现 接口中的成员都是public的 接口中定义的成员变量实际上都是常量 一个类可以实现多个接口 抽象类 抽象类中可以定义构造器 可以有抽象方法和具体方法 抽象类中的成员可以是private、默认、protected、public 抽象类中可以定义成员变量 有抽象方法的类必须声明为抽象类而抽象类未必有抽象方法 抽象类中可以包含静态方法 一个类只能继承一个抽象类 2.Java面向对象有哪些特征 抽象把现实世界的某一类物质抽象出来抽象分为数据抽象过程抽象数据抽象就是比如鸟的翅膀过程抽象就是鸟用翅膀飞。 继承存在层级关系子类复用父类的代码块继承关系存在方法重写。 封装将一部分代码封装出来实现代码的复用 多态子类的对象指向父类的引用不同的子类对同一消息做出的响应。 3.JDK8的新特性有哪些 接口的默认实现default方法。给程序员留的一个后悔药可以直接在接口的默认方法里写业务的代码逻辑。 LocalDateTime、LocalDateAPIjdk8新加的时间Api或方法LocalDate.now()可以通过提供的API获取年月日信息格式化简便。 lambda表达式使java语言拥有类似python语言的函数式编程方式代码简洁。jdk8提供的函数式接口有Function、BiFunction、Consumer、Supplier、Predicate。 Stream集合API提供流式操作集合对集合的分类规整更方便常见的API有map()转换函数filter()过滤函数groupingBy()分组函数sort()排序函数等配合Collectors收集器使用。 Optional类解决空指针异常的类支持获取对象判断对象是否存在对象为null返回兜底数据等。 4.你知道运算符和、|和||的区别吗 按位与操作只有对应的两个二进制数为1时结果才为1。 111、10 0、01 0、00 0 |按位或操作只要有一个二进制数为1时结果就为1。 111、10 1、01 1、00 0 短路与操作判断短路与左侧是否正确如果不正确则不执行短路与后面的判断。 ||短路或操作判断短路或左侧是否正确如果正确则不执行短路或后面的判断。 5.如何以最有效的方法计算2乘8 采用位运算23 将一个数左移n位就相当于乘以2的n次方位运算是CPU直接支持的所以效率高。 JDK源码中HashMap的默认容量是16采用位运算。 int DEFAULT_INITIAL_CAPACITY 1 4; //16 public static void main(String[] args) {int num 2 3;System.out.println(num);}6.实现变量交换的方式有几种 第一种 定义一个中间变量c但是这种往往损耗性能。第二种 private static void swap1(int a, int b) {System.out.println(a a,b b);//现在a 相当于a和b的和a ab;//b就相当于a的值了b a-b;//a就相当于b的值了a a-b;System.out.println(a a,b b);}第三种 异或运算一个数与另一个数异或两次就是其本身一个数和自身异或的结果是0 private static void swap2(int a, int b) {System.out.println(a a,b b);//a a^ba a^b;//b b^a^bb b^a;//a a^b^aa a^b;System.out.println(a a,b b);}7.说下Java数据类型分类 基本数据类型byte、short、int、long、boolean、char、double、float引用数据类型String、Enum、接口、抽象类、数组 8.和equals的区别 在比较基本数据类型的时候比较的是数值比较引用数据类型的时候比较的是内存地址Object类下的equals比较的是对象的地址String类中重写了equals方法比较的是字符串的数值。9.try里面有个returnfinally里也有个return会有什么返回结果 public boolean test(){try {return false;}finally {return true;}}在执行try、catch中的return之前⼀定会执行finally中的代码如果finally存在如果finally中有return语句就会直接执行finally中的return方法所以finally中的return语句⼀定会被执行的。10.你知道try-with-resource新特性吗 JDK1.7之后处理异常块可实现自动关闭资源操作try()里面定义多个资源执行完进行关闭。11.String str new String(“a”)创建了几个对象 如果常量池中存在则直接new一个对象。如果常量池不存在则在常量池中创建一个对象也在堆中创建一个对象。12.String、StringBuffer、StringBuilder的区别 三者都是被final修饰的类。 本质上都是char[]字符数组的实现。 String、StringBuffer、StringBuilder中String是不可变的对象其他两个是可变的。 使用场景 操作少量的数据用String但是常改动内容且操作数据多情况下最好不要用String因为每次生成中间对象性能会降低。 单线程下操作大量的字符串用StringBuilder虽然线程不安全但是不影响。 多线程下操作大量字符串且需要保证线程安全则用StringBuffer 13.Overload和Override的区别 重载Overload表示同一个类中可以有多个名称相同的方法但这些方法的参数列表各不相同参数个数或类型不同。重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同。 14.JDK8接口的新特性 interface中可以有static方法但必须有方法体实现该方法只属于该接口接口名直接调用该方法。接口中新增default关键字修饰的方法default方法只能定义在接口中可以在子类或子接口中被重写default定义的方法。父接口的default方法如果被重写那么子类的实现对象调用以重写的方法为准。本类没有重写父接口的default方法则使用父接口的default方法逻辑。 15.说下Vector和ArrayList、LinkedList的联系和区别 三者区别 ArrayList底层是数组实现线程不安全查询和修改非常快但是增加和删除慢。LinkedList底层是双向链表线程不安全查询和修改速度慢但是增加和删除快。Vector底层是数组实现线程安全的操作的时候使用synchronized进行加锁。 使用场景 Vector已经很少用了增加和删除场景多用LinkedList查询修改多用ArrayList 16.如果需要保证线程安全ArrayList应该怎么做 方式一可以自己写个包装类继承ArrayList根据业务一般是add/update/remove加锁方式二使用Collections.synchronizedList(new ArrayList)使用synchronized加锁底层加入同步代码块。方式三采用CopyOnWriteArrayList()底层使用ReentrantLock加锁。 17.了解CopyOnWriteArrayList吗 CopyOnWriteArrayList是JUC下提供的一个类在执行修改操作时会拷贝一份新的数组进行操作add、set、remove代价十分昂贵在执行完修改后会将原来的集合的引用指向新的集合来完成修改的操作源码里用ReentrantLock可重入锁来保证不会有多个线程同时拷贝一份数组。 应用场景读高性能适用读操作远远大于写操作的场景中使用读的时候是不需要加锁的直接获取删除和增加是需要加锁的读多写少。Collections.synchronizedList线程安全的原因是因为它几乎在每个方法中使用了synchronized同步锁。场景写操作性能那个比CopyOnWriteArrayList好读操作性能那个并不如CopyOnWriteArrayList。 18.CopyOnWriteArrayList的设计思想是怎样的有什么缺点 CopyOnWriteArrayList的设计思想读写分离最终一致。 缺点内存占用问题写时复制机制内存里面会同时驻扎两个对象的内存旧的对象和新写入的对象如果对象大则容易发生Yong GC和Full GC。 19.说下ArrayList的扩容机制是怎样的 注意JDK1.7之前ArrayList默认大小是10JDK1.7之后是0。 未指定集合容器大小默认是0若已经指定大小则集合大小为指定的当集合第一次添加元素的时候集合大小扩容为10ArrayList的元素个数大于其容量扩容的大小原始大小原始大小/2。 20.说下HashMap和HashTable的区别 HashMap底层是哈希表实现非线程安全的默认容量是16、允许有空的键和值实现的是Map接口。 HashTable基于哈希表实现线程安全的加了synchronized默认容量是11不允许有null的键和值继承自 Dictionary 类。 21.说下对象的hashcode()和equals() hashcode()顶级类Object里面的方法所有的类都是继承自Object返回一个int类型的数根据一定的hash规则映射成一个数组即散列值。 equals()顶级类Object类的方法返回一个boolean类型根据自定义的匹配规则用于匹配两个对象是否一样。 判断一个对象是否相等先判断hashcode当hashcode不同时返回两个对象不同当hashcode相同时就进行equals比较。 22.HashMap和TreeMap应怎样选择 HashMap底层实现是散列桶数组链表jdk1.8之后当链表长度大于8的时候转换成红黑树可以实现快速的存储和检索但是确实包含无序的元素适用于map中插入删除和定位元素。 TreeMap使用存储结构是一个平衡二叉树-红黑树可以自定义排序规则要实现Comparator接口能便捷的实现内部元素的各种排序但是一般性能比HashMap差适用于按照自然排序或自定义规则的场景。 23.Set和Map的关系 Set的核心就是不保存重复的元素存储一组唯一的对象。 Set的每一种实现都是对应Map里的一种封装HashSet对应的就是HashMapTreeSet对应的就是TreeMap。 Set的集合对象作为Map的Key在使用一个Object常量作为value。 24.常见Map的排序规则是怎样的 按照添加顺序使用LinkedHashMap()按照自然排序使用TreeMap自定义排序TreeMap(Comparetor c)。 25.如果需要线程安全且效率高的Map应该怎么做 多线程环境下可以用JUC包下的ConcurrentHashMapCollections.synchronizedMap()ConcurrentHashMap的效率要比HashTable高很多使⽤Collections.synchronizedMap包装后返回的map是加锁的。 26.说一说HashMap的底层实现 HashMap底层是数组链表红黑树红黑树是JDK1.8之后才有的当链表长度大于8的时候链表会转换成红黑树。 数组中的每一项都是一个链表即数组和链表的结合体。 jdk1.8之后是一个NodeK,V[] tables 数组jdk1.8之前是EntryK,V数组Node继承EntryEntry是一个key-value的键值对它持有一个指向下一个Entry的引用table数组中存放每个Node元素。 27.什么是hash碰撞创建的解决办法有哪些HashMap采用哪种方法 hash碰撞的意思就是不同的key计算得到相同的Hash值。需要放到同个数组的桶内。 常见的解决办法链表法、开发地址法、再哈希法等。 HashMap采用的就是链表法。 28.说一说HashMap底层为什么要用数组链表红黑树 数组NodeK,V[] table根据对象的key的hash值判断数组在那个索引节点下。 链表的作用是为了解决Hash冲突将Hash值一样的对象存放在一个链表中对应的槽位上。 红黑树是JDK8替换节点超过8个的时候的链表用的主要是提升查询性能。 通过hash碰撞让HashMap不断产生碰撞那么相同的key的位置的链表就会不断的增长当对这个HashMap的响应位置进行查询的时候就会遍历这个超大的链表性能会下降所以改用红黑树。 29.为什么选择红黑树为什么链表长度到达8之后才去替换成红黑树 使用红黑树只要是为了提升查询的速度红黑树是平衡二叉树的一种插入数据后会通过左旋、右旋、变色等操作来保持平衡解决单链表查询深度的问题。 二叉树在查找的时候会变成一个线性结构和原来的链表存在一样深度遍历的问题所以不是用二叉树。 在数据量少的时候操作数据遍历线性表比红黑树所消耗的资源少前期采用线性表等到一定数量之后才会变成红黑树。 30.了解ConcurrentHashMap吗为什么性能比HashTable高 ConcurrentHashMap线程安全的Map采用了分段锁的思想提高性能锁粒度更细化。HashTable类基本上所有的方法都是采用synchronzied进行线程安全控制高并发下效率降低。 31.JDK7和JDK8中的ConcurrentHashMap实现有什么区别 JDK8之前ConcurrentHashMap使用锁分段技术将数据分成⼀段段存储每个数据段配置⼀把锁即segment类这个类继承ReentrantLock来保证线程安全。 技术点SegmentHashEntry JKD8的版本取消Segment这个分段锁数据结构底层也是使⽤Node数组链表红⿊树从而实现对每⼀段数据就行加锁也减少了并发冲突的概率CAS(读)Synchronized(写)。 技术点NodeCasSynchronized 32.Map的遍历方式有哪些 先通过map.keySet()获取到键然后根据键获取到值。 通过Map.Entry(String,String)获取然后使用entry.getKey()获取到键然后通过entry.getValue()获取到值。 使用Iterator迭代器遍历Map。 Map.values()获取所有的value进行遍历。 33.说下HashMap的put和get的核心逻辑 put核心逻辑 首先判断table是否为空或者长度为0如果是的话进行扩容初始化。如果为否的话则进行hash分析命中的那个桶是否有值如果没有直接插入数据。如果命中桶中有数据判断key值是否一样是的话直接覆盖原值。否则的话判断是否为树节点如果是树节点则直接插入到红黑树。否则的话就要遍历链表判断长度是否大于8是的话转为红黑树插入。最后都要判断一下是否需要扩容。 get核心流程 先获取首节点hash碰撞概率小通常链表第一个节点就是值没必要去循环遍历。如果不止一个节点就要循环遍历了。判断是红黑树还是链表在对应的数据结构中查找就行了。 34.说下ConcurrentHashMap的put的核心逻辑 首先key进行重哈希spread(key.hashCode())。对当前table进行无条件的循环。如果没有初始化table则用initTable进行初始化。如果没有hash冲突则直接用cas插入新节点成功后则直接判断是否需要扩容吗然后结束。如果是MOVED状态的话就需要扩容如果存在hash冲突利用synchronzied加锁保证线程安全。如果是链表则直接遍历插入如果数量大于8则需要转成红黑树。最后是检查一下是否需要扩容。
http://www.hkea.cn/news/14407292/

相关文章:

  • 网站 app微信三合一免费下载app软件正版
  • 设计类网站策划案网站开发师培训
  • 湖南网站建设kaodezhu自己做的网站怎么上线
  • app制作费用清单seo范畴
  • 动力无限网站效果好不好电子厂家网站建设
  • 有网站模板怎么做网站珠海网络公司有哪些
  • 网站开发需要用到哪些软件百度有刷排名软件
  • 关于学校的网站模板免费下载wordpress做博客什么主题好
  • 河北建设网站怎么下载企业锁wordpress网站放icp
  • 为什么百度搜不到我的网站找工作的网站
  • 网站建设招标文件技术部分网页设计参考书籍
  • 广告网站建设网vue做企业网站
  • 上海专业网站建站公wordpress变成小程序
  • 做个网站需要多少钱网站编程代码大全
  • 编程网站排名网站重做 影响
  • 自助建手机网站免费当当网网站建设策划书
  • 韶关做网站需要多少钱wordpress定时发布
  • 事业单位门户网站开发南沙营销网站建设
  • 全国新农村建设中心网站呼和浩特商城网站建设
  • 南宁市兴宁建设局网站宜良县建设局网站
  • 温州网站推广驭明视频网站后台登陆
  • 网站建设主题深圳网站建设去哪里
  • 个人网站建设维护微信号 网站模板
  • 专业网站建设报价道滘镇网站建设
  • 中国建设银行网站软件下载重庆网站建设软件
  • 电子商务网站开发的总结偷的网站怎么做seo
  • 网站建设 正邦医院如何做网站策划?
  • 上海住房城乡建设部网站学网站建设与管理难吗
  • 网站后台的关键词搜狗新闻源网站怎么做
  • 深圳宝安区医院wordpress seo