2020届校招-老虎证券-Windows开发工程师笔试题

1. 与10.110.12.29 mask225.225.225.224属于同一网段的IP地址是

  • 10.110.12.31
  • 10.110.12.0
  • 10.110.12.32
  • 10.110.12.30

2. 事务的持续性是指:

  • 一个事务内部的操作及使用的数据对并发的其他事务是隔离的(隔离性)
  • 事务一旦提交,对数据库的改变是永久的(持久性/持续性)
  • 事务必须是使数据库从一个一致性状态变到另一个一致性状态(一致性)
  • 事务中包括的所有操作要么都做,要么不做(原子性)

3. 8人排队上车,其中A,B两人之间恰好有4人,则不同的排列方法是:
在这里插入图片描述
4.下列关于java异常的说法,正确的是( )

  • 程序所有的可能出现的异常必须在catch中捕获,否则将引起编译错误;
  • 在方法定义中以throws标识出异常,在调用该方法中的方法中必须处理;
  • RuntimeException及其子类的异常不可以做出处理;
  • catch段中的语句,不允许再次出现异常;

5.进行一系列独立实验,每次实验成功的概率是P,则在成功两次之前已经失败3次的概率为( )
在这里插入图片描述
6.关于TCP协议,下列说法错误的是( )

  • TCP提供了拥塞控制的机制( 慢开始,拥塞避免,快重传,快恢复)
  • TCP是面对连接的协议
  • TCP属于传输层协议
  • TCP是基于数据报文的协议(基于字节流)

7.已知一个由5个顶点8条边构成的有向图,以下说法正确的是( )

  • 各顶点的入度之和为8
  • 各顶点的度之和为8(出度入度均为8)
  • 若以邻接矩阵作为存储结构,矩阵中非0元素的个数为16( 5*5 - 8 = 17)
  • 若以邻接表作为存储结构,邻接表中结点的个数为16( 5 + 8 = 13)

8.short a = -4 ; a为16位整型,则a的2的补码表示是—0xfffc
补码运算:正数为原码本身,负数为原码取反加一
在这里插入图片描述

9.关于排序算法下列说话错误的是

  • 冒泡排序的空间复杂度小于快速排序
  • 快速排序是稳定排序( 不稳定 )
  • 堆排序是非稳定排序
  • 归并排序的时间复杂度是0( n long n )

10.二叉树已知前序遍历结果为:GDAFEMHZ , 中序遍历的结果是 :ADEFGHMZ , 求后序遍历结果

在这里插入图片描述
编程题:
1. 输入参数为一个字符串,仅由大括号{ }、中括号[ ] 、小括弧( )组成,要求必须满足算术表达式的要求,即嵌套以及成对出现。即大括号{ } 以内可以出现中括号[ ] 、小括弧( );中括号[ ] 内只能出现小括弧( )
{ [ ( ) ] } 符合要求
( [ ] ) 不符合
[ { } ] 不符合

#include<iostream> 
#include<stack>
using namespace std;
bool fun( string str ){
    //如果为空或者只有一个字符,直接返回false
    if( str.size() == 0 ||  str.size() == 1 )
        return false;
    stack<char> s;//辅助栈
    
    for(int i = 0 ; i < str.size() && str[i] != '\n' ; i++ ){
        if( s.empty() ){//如果栈为空
            if( str[i]=='(' || str[i]=='[' || str[i]=='{' ) s.push( str[i] );
            else              
                return false ; //如果为右括号直接返回false           
        }
        //如果栈不为空
        else if( ( str[i] == '[' && s.top() == '{') || ( str[i] == '(' && ( s.top() == '{' || s.top() == '['))  ) 
            s.push( str[i] ); //满足规则,入栈 
        else if( (str[i] == ')'&&s.top() =='(') || (str[i] == ']'&&s.top() =='[') || (str[i] == '}'&&s.top() =='{') )
            s.pop();
        else
         return false ; //如果为右括号直接返回false      
    }
    
    if(s.empty())      
        return true; 
    return false;
}

int main(){
    string str;
    while(1){
        cin>>str;
        if(fun(str))
            cout<<str<<"符合要求  "<<endl ; 
        else
            cout<<str<<"不符合要求  "<<endl ;
         
    }
    
    return 0 ; 
    
}

2.盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:不能倾斜容器,且 n 的值至少为 2。
原题地址

class Solution {
public:
    int maxArea(vector<int>& height) {
        
        if( height.size() <= 1 )
            return 0;        
        int l = 0; int res = 0 ;
        int r = height.size() - 1 ; 
        while( l < r  ){
            res = max( min( height[l] , height[r] ) * ( r - l ) , res );
            if( height[l] < height[r] ) ++l;
            else --r;
        }
        return res;        
    }
};

双指针法,官方给的题解挺清楚的。

3. 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
解析:从头遍历整个链表,如果当前节点的值与下一个节点的值相同,那么他们就是重复的节点,都可以被删除。为了保证删除之后的链表还是相连的,我们要把当前节点的前一个节点的和后面没有重复的节点相连

class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead)
    {
        if(pHead==NULL||pHead->next==NULL) return pHead;//如果链表为空 或者链表内只有一个节点 直接返回。
 
        // 虚拟头节点,不用考虑头节点可能被删掉的情况 可以简化代码
        auto dummy = new ListNode(-1);
        dummy->next = pHead;
 
 
        ListNode* p = dummy; //上一次保留节点的位置
        while(p->next!=NULL){
           auto q = p->next;
           //如果 q的值 与 p的下一个节点值 相同 ,q往前移动
           while(q && p->next->val == q->val) q = q->next;
           if(p->next->next == q) //如果相同段长度为1,即没有重复,直接后移一位即可
               p = p->next;
           else//如果有重复,删除重复段
               p->next = q;
        }
        return dummy->next;
    }
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jxf205-fpga开发工程师笔试题是一个针对FPGA(Field Programmable Gate Array)开发工程师笔试题。FPGA是一种可编程的逻辑芯片,可根据设计需要重新配置其硬件电路。以下将就这个笔试题进行回答。 FPGA开发工程师是负责使用HDL(硬件描述语言)来设计、开发和测试FPGA的专业人士。这些工程师需要具备深厚的FPGA硬件知识、熟练的HDL编程技能以及丰富的电路设计经验。 在笔试题中,可能会包含一些关于FPGA开发的基础知识和编程技巧的问题。例如,可能会涉及如何使用VHDL或Verilog编程语言编写一个简单的FPGA设计,如何使用FPGA开发工具(如Xilinx ISE或Vivado)进行设计和仿真,以及如何评估和优化FPGA设计的性能。 此外,笔试题可能会要求解决一些特定的FPGA设计问题,如时序约束、时钟分配、布线和时序优化等。这些问题对于一个合格的FPGA开发工程师来说是常见的挑战,需要工程师具备扎实的理论基础和解决问题的能力。 最后,笔试题可能还会涉及到一些FPGA开发中常用的外设接口和协议,如UART、SPI、I2C和PCIe等。对于一个优秀的FPGA开发工程师来说,熟悉这些接口和协议,能够设计和实现各种外设接口,是非常重要的技能。 综上所述,作为一名FPGA开发工程师,需要掌握FPGA硬件知识、HDL编程技巧、电路设计经验以及熟悉外设接口和协议。通过扎实的理论基础和实践经验,能够解决各种FPGA设计和开发中的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值