4/23远景智能笔试复盘

选择

1、高内聚和低耦合,下列哪个耦合度最高?
      A.通过函数参数传递
      B.一个函数修改另一个函数数据
      C.通过全局变量
      D.通过指示器
解析: B
    内聚:一个模块内部各个成分之间相关联程度的度量。
    耦合:模块之间依赖程度的度量。模式设计追求强内聚,弱耦合。
    耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:
    (1) 内容耦合:有下列情形之一,两个模块就发生了内容耦合:
            一个模块访问另一个模块的内部数据
            一个模块不通过正常入口而转到另一个模块的内部
            一个模块有多个入口
    (2) 公共耦合:当两个或多个模块通过公共数据环境相互作用时,他们之间的耦合称为公共环境耦合。
    (3) 控制耦合:如果两个模块通过参数交换信息,交换的信息有控制信息,那么这种耦合就是控制耦合。
    (4) 特征耦合:如果被调用的模块需要使用作为参数传递进来的数据结构中的所有数据时,那么把这个数据结构作为参数整体传送是完全正确的。但是,当把整个数据结构作为参数传递而使用其中一部分数据元素时,就出现了特征耦合。在这种情况下,被调用的模块可以使用的数据多于它确实需要的数据,这将导致对数据的访问失去控制,从而给计算机犯错误提供机会。
    (5) 数据耦合:如果两个模块通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合就是数据耦合。
    内聚有如下的种类,它们之间的内聚度由弱到强排列如下:
    (1) 偶然内聚:模块中的代码无法定义其不同功能的调用。但它使该模块能执行不同的功能,这种模块称为巧合强度模块。
    (2) 逻辑内聚。这种模块把几种相关的功能组合在一起, 每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能
    (3) 时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
    (4) 过程内聚:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。
    (5) 通信内聚:指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。
    (6) 顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。
    (7) 功能内聚:共同完成同一功能,缺一不可,模块不可再分割
2、如下四个选项中,哪些是数据库模糊查询的通配符?
      A.?
      B.*
      C.%
      D._
解析: CD
    跟在where子句后面的like关键字就是模糊查询.
    模糊查询还可以用通配符:1.%代表任意字符串 2._代表任意字符 3.[]匹配指定范围内的单个任意字符 4.[^]意思是除了某个字符其他字符都可以。
3、计算机对汉字信息的处理过程实际上是各种汉字编码间的转换过程,这些编码不包括( )
      A.汉字输入码
      B.汉字内码
      C.汉字字形码
      D.汉字状态码
解析: D
    汉字的输入、输出和处理的过程,实际上是汉字的各种编码之间的转换过程。这些编码包括汉字输入码、汉字内码、汉字地址码和汉字字形码。
4、机器A的ip地址为202.96.128.130.子网掩码为255.255.255.128,则该ip地址的网络号为
      A.202.0.0
      B.202.96.0
      C.202.96.128.128
      D.255.255.255
解析: C
    IP地址与子网掩码进行与运算得到网络号,子网掩码取反与IP地址进行与运算后得到主机号。
5、下面关于二分查找的叙述争正确的是: ( )
      A.表必须有序,表可以顺序方式存储,也可以链表方式存储
      B.表必须有序且表中数据必须是整型,实型或字符型
      C.表必须有序,而且只能从小到大排列
      D.表必须有序,且表只能以顺序方式存储
      E.表不需要有序,只要符合小堆和大堆的数据排列要求即可
      F.表不需要有序,但存储必须是顺序存储
解析: D
6、关于类模板的说法正确的是()
      A.类模板的主要作用是生成抽象类
      B.类模板实例化时,编译器根据给出的模板实参生成一个类
      C.在类模板中的数据成员具有同样类型
      D.类模板中的成员函数没有返回值
解析: B
    A错误,可以生成非抽象类;B正确,类是对象的抽象,类模板可以说是类的抽象,用以生成一个类;C错误,类模板与普通类一样,可以使用任意数据类型;D错误,可以有返回值。
7、下面哪些是对称加密算法()
      A.DES
      B.AES
      C.DSA
      D.RSA
解析: AB
    A,B为对称加密算法,C,D为非对称加密算法。
8、以下哪些算法可以检测一个有向图中是否存在环( )
      A.深度优先遍历
      B.广度优先遍历
      C.拓扑排序
      D.关键路径算法
解析: AC

编程

1、给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。

import java.util.*;

public class Main{

    static class LinkNode{
        int val;
        LinkNode next;
        LinkNode(int val){
            this.val = val;
            this.next = null;
        }
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String[] ss = sc.nextLine().split(" ");
        int k = sc.nextInt();
        LinkNode head = new LinkNode(-1);
        LinkNode tail = head;
        for (String s : ss) {
            LinkNode node = new LinkNode(Integer.valueOf(s));
            tail.next = node;
            tail = tail.next;
        }
        head = head.next;
        LinkNode newHead = reverseGroup(head,k);
        while (newHead != null){
            System.out.print(newHead.val+" ");
            newHead = newHead.next;
        }
    }
    public static LinkNode reverseGroup(LinkNode head, int k){
        if(head == null || head.next == null || k <= 1){
            return head;
        }
        LinkNode currentNode = head;
        for (int i = 1; i < k; i++) {
            currentNode = currentNode.next;
            if(currentNode == null){
                return head;
            }
        }
        LinkNode next = currentNode.next;
        reverse(head,currentNode);
        head.next = reverseGroup(next,k);
        return currentNode;
    }
    public static LinkNode reverse(LinkNode head,LinkNode tail){
        if(head == null || head.next == null)
            return head;
        LinkNode pre = null;
        LinkNode tmp = null;
        while(pre != tail){
            tmp = head.next;
            head.next = pre;
            pre = head;
            head = tmp;
        }
        return pre;
    }
}
### 立辰远景软件开发笔试经验与题目解析 立辰远景公司在软件开发岗位的笔试中,通常会涉及算法、数据结构、数据库原理以及Java/C++语言相关的知识点。根据过往的笔试记录,可以总结出以下几个常见的题型考点。 #### 1. **C++ 接口与抽象类** - C++接口的设计是通过**抽象类**实现的,抽象类能够将实现细节与接口分离,提供一种规范化的编程方式。 - 抽象类通常包含纯虚函数,这些函数没有具体的实现,要求派生类必须重写它们[^1]。 #### 2. **平衡二叉搜索树(Balanced Binary Search Tree)** - 平衡二叉搜索树是一种高效的查找结构,其核心特性是:任意节点的左右子树高度差不超过1,并且左子树的所有节点值都小于当前节点值,右子树的所有节点值都大于当前节点值。 - 这种结构常用于需要快速查找、插入删除操作的场景,例如在实际应用中的动态数据管理。 #### 3. **数组处理与滑动窗口问题** - 在引用[2]中提供的代码片段中,主要功能是从一个整数数组中找到 `k` 个最接近目标值 `x` 的元素。具体逻辑是通过比较首尾元素与 `x` 的距离,逐步缩小范围,直到数组长度等于 `k`。 - 这种类型的问题常见于算法面试,尤其是滑动窗口、双指针等技巧的应用。 示例代码: ```cpp void func(vector<int>& array, int& k, int& x) { vector<int> ans = array; while (ans.size() > k) { if ((x - *ans.begin()) <= (*(ans.end() - 1) - x)) { ans.pop_back(); } else { ans.erase(ans.begin()); } } for (int i = 0; i < ans.size() - 1; i++) { cout << ans[i] << ","; } cout << ans[ans.size() - 1] << endl; } ``` #### 4. **数字乘积与字符串处理** - 引用[3]中的 Java 代码展示了如何计算一个数字字符串各位数字的乘积,并重复此过程,直到结果为一位数。该问题考察了字符串处理、循环控制以及基本的数学运算能力。 - 此类问题常用于测试对基础编程逻辑的理解,尤其是递归或迭代的使用。 示例代码: ```java public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String st = sc.nextLine(); int cnt = 0; while (true) { long sum = 1; cnt++; int len = st.length(); for (int i = 0; i < len; i++) { sum *= (st.charAt(i) - '0'); if (sum == 0) { System.out.println(cnt); return; } } if (sum < 10) { System.out.println(cnt); return; } st = new String(sum + ""); } } } ``` #### 5. **数据库索引与B+树** - MySQL 中的索引通常基于 B+ 树结构,这种结构适合磁盘存储并支持高效的范围查询。 - B+ 树的特点包括:所有数据都在叶子节点上,叶子节点之间通过指针相连,非叶子节点仅作为索引节点存在[^4]。 #### 6. **JVM 相关知识** - JVM 类加载机制遵循**双亲委派模型**,确保类的唯一性安全性。 - 垃圾回收器如 Serial、Parallel Scavenge、CMS G1 各有优劣,适用于不同场景下的内存管理需求[^4]。 #### 7. **Java 集合框架** - `ArrayList` `LinkedList` 的区别在于底层实现(数组 vs 链表),前者适合随机访问,后者适合频繁插入/删除。 - `HashMap` `HashSet` 的区别在于前者是键值对集合,后者是无序不重复的元素集合。 - `TreeMap` `TreeSet` 基于红黑树实现,支持有序遍历[^4]。 #### 8. **并发与锁机制** - CAS(Compare and Swap)机制是一种无锁算法,常用于实现线程安全的数据结构。 - `volatile` 关键字用于保证变量的可见性,但不保证原子性[^4]。 #### 9. **负载均衡与分布式系统** - 负载均衡算法如轮询、加权轮询、最少连接数等,广泛应用于微服务架构中。 - Master 选举策略是分布式系统中常见的协调机制,通常依赖 ZooKeeper 或 Raft 算法实现。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值