0
点赞
收藏
分享

微信扫一扫

恒生Java笔试学习记录

楚木巽 2022-02-28 阅读 25

总结与归纳不足

文章目录


一、数据库MySQL

1、给已存在的表添加NotNull约束:alter table score modify s_score int not null;
2、更新语句:'UPDATE runoob_tbl SET runoob_title="学习 Python" WHERE runoob_id=3';
3、查询每个班数学前三名的学生姓名:

select name from student where s_id in (
select s_id, @m:=@m+1 r from score, (select @m=0)a where c_id = '02' order by s_score desc limit 3);

二、选择题

1.运行在不同主机上的进程通信

套接字。

2、“TCP/IP 协议的传输层协议不能提供无连接的服务”:错误的

TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。
TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。
所以是错误的,UDP可以提供。

3、排序算法

在这里插入图片描述

4、java线程安全的集合

  1. 早期线程安全的集合:Vector、HashTable
    1.Vector Vector和ArrayList类似,是长度可变的数组,与ArrayList不同的是,Vector是线程安全的,它给几乎所有的public方法都加上了synchronized关键字。由于加锁导致性能降低,在不需要并发访问同一对象时,这种强制性的同步机制就显得多余,所以现在Vector已被弃用
    2.HashTable HashTable和HashMap类似,不同点是HashTable是线程安全的,它给几乎所有public方法都加上了synchronized关键字,还有一个不同点是HashTable的K,V都不能是null,但HashMap可以,它现在也因为性能原因被弃用了
  2. Collections包装方法
    Vector和HashTable被弃用后,它们被ArrayList和HashMap代替,但它们不是线程安全的,所以Collections工具类中提供了相应的包装方法把它们包装成线程安全的集合
    代码如下(示例):
List<E> synArrayList = Collections.synchronizedList(new ArrayList<E>());

Set<E> synHashSet = Collections.synchronizedSet(new HashSet<E>());

Map<K,V> synHashMap = Collections.synchronizedMap(new HashMap<K,V>());

...

Collections针对每种集合都声明了一个线程安全的包装类,在原集合的基础上添加了锁对象,集合中的每个方法都通过这个锁对象实现同步

  1. java.util.concurrent包中的集合
    1.ConcurrentHashMap
    ConcurrentHashMap和HashTable都是线程安全的集合,它们的不同主要是加锁粒度上的不同。HashTable的加锁方法是给每个方法加上synchronized关键字,这样锁住的是整个Table对象。而ConcurrentHashMap是更细粒度的加锁
    在JDK1.8之前,ConcurrentHashMap加的是分段锁,也就是Segment锁,每个Segment含有整个table的一部分,这样不同分段之间的并发操作就互不影响
    JDK1.8对此做了进一步的改进,它取消了Segment字段,直接在table元素上加锁,实现对每一行进行加锁,进一步减小了并发冲突的概率
    2.CopyOnWriteArrayList和CopyOnWriteArraySet
    它们是加了写锁的ArrayList和ArraySet,锁住的是整个对象,但读操作可以并发执行
    3.
    除此之外还有ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinkedQueue、ConcurrentLinkedDeque等,至于为什么没有ConcurrentArrayList,原因是无法设计一个通用的而且可以规避ArrayList的并发瓶颈的线程安全的集合类,只能锁住整个list,这用Collections里的包装类就能办到

三、编程题

给定一些正数(代表长度)组成的数组A,返回由其中三个组成的面积不为0的三角形的最大周长。
代码如下(示例):

    public int largestPerimeter(int[] A) {
        Arrays.sort(A);
        for(int i = A.length - 1; i >= 2; i--) {
            int a = A[i];
            int b = A[i - 1];
            int c = A[i - 2];
            if(a < b + c && b < a + c && c < b + a){
                return a + b + c;
            }
        }
        return 0;
    }

该处使用的url网络请求的数据。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了恒生笔试时自己遇到的一些问题。

举报

相关推荐

0 条评论