• 研发笔试试卷(Delphi)


      第一部分 Delphi知识
      1.
      如果一个元件希望放到IDE的元件面板上,它必须从___TComponent____类派生,
      如果一个元件能作为其它元件的容器,它必须从_____TWinControl______类派生,
      如果一个元件在运行时可见,它必须从________TGraphicControl_TControl______类派生
      (A)TGraphicControl (B)TWinControl (C)TComponent (D)TPersistent (E)TControl
      
    写出TEdit、TLabel、TTimer的主要继承路径,答题格式TXXX->TXXX->......
      TEdit: TObject->TPersistent->TComponent-> TControl-> TWinControl->TWidgetControl->TCustomEdit->TEdit
      TLabel: TObject->TPersistent->TComponent-> TControl-> TWinControl->TFrameControl->TCustomLabel-> TLabel
      TTimer: TObject->TPersistent->TComponent->THandleComponent
      
    1) 为防止界面窗体“僵死”,可调用如下代码
      A、Application.DoEvent
      B、Application.DoEvents
      C、Application.Idle
      DD、Application.ProcessMessages
    2) 解释为什么?
    答:让系统响应消息,有机会响应其它的事件了。 不让 application 的 process 把系统的资源给锁死(例如: cpu)
      
    有如下类定义,请问类THouse的InstanceSize是__32___
      TPoint = packed record
        X: Longint;
        Y: Longint;
      end;
      
      THouse = class
      private
        FOwner: string;                  //8
        FPosition: TPoint;                //8
        FBounds: array[0..2of Integer;     //8
        FLessees: TStrings;               //4
      public
        procedure Paint;                 //4
        property Owner: string read FOwner; //0
      end;
      A、24 B、28 C、32 D、40
      
    常用的控件ListBox、ComboBox等都有BeginUpdate和 EndUpdate方法,请问他们的主要作用是什么?
    答:    一次大量加入Item时,不显示界面加入过程,以提高导入速度

    写SQL语句
      如果有一个部门人员表BaseInfo,字段为ID,PID,Name(姓名),PID表示上下级关系:
      (1)分组查询:统计每个PID的记录数 ID 记录数
             select PID, count(ID) as 下属人数 from  BaseInfo group by PID
      
      (2)请做一个查询,得到以下结果(按姓名排序)
      ID 姓名 下属姓名
      
       select 1 as id , (select name from BaseInfo  where id  =1) as 姓名,Name  as 下属姓名   from BaseInfo where ID  in
         (select  ID  from BaseInfo where PID= 1)  order by 下属姓名 desc
      
       (3)在TSQL中使用事务需要用那些SQL关键字?
         答:  BEGIN TRANSACTION  COMMIT   ROLLBACK  

    解释一下Windows的消息机制和经典Windows应用程序的运作流程
       答:
    解释Delphi中“事件”的实现原理,如果你要为控件扩展一个自定义事件,你该怎么做?
      答: Button1.OnClick := Form1.Button1Click;
        定义一个Private 的
        FonDo: TNotifyEvent= procedure(Sender: TObject) of object;//method pointer
        if Assigned(FonDo) then    FonDo(Self);//第三步
      
    为什么在TList中Add操作要比Insert操作快?
    答: Add操作,TList只是在链表尾添加,O(1)的操作;
      Insert操作,要修改链表中间某位置前后记录的Link域的值 ,要从链表头开始是,是 O(n)的操作
      
      10、某次调试中发现某树形控件响应很迟缓,经调试发现是如下语句,TreeView.Items.Clear执行缓慢,请分析可能的原因是什么?
       答: 可能要析构TreeView.Items里的所有结点指向的对象
      
      第二部分 Delphi编程
      【编程】 给定一个文本文件(英文文章),统计其中各单词的频次。
      Var
        Form1: TForm1;
        al: TIntegerList;
        strL: TStringList;
      Procedure TForm1.FormCreate(Sender: TObject);
      Begin
        al := TIntegerList.Create;
        strL := TStringList.Create;
        Memo1.Lines.LoadFromFile('d:\aaa.txt');
      End;
      
      Procedure TForm1.FormClose(Sender: TObject; Var Action: TCloseAction);
      Begin
        al.Free;
        strL.Free;
      End;
      Var
        i, a: Integer;
      Procedure TForm1.Button1Click(Sender: TObject);
      
      Begin
        ListBox1.Clear;
        strL.Clear;
        al.Clear;
        a := 1;
        For i := 1 To Length(Memo1.Text) Do Begin
          If  not (Memo1.Text[i] In ['a'..'z', 'A'..'Z','0'..'9']) Then Begin
            If  not (Memo1.Text[i-1] In ['a'..'z', 'A'..'Z','0'..'9'])  Then Begin
               a := i+1;
               Continue;
            End;
            If strL.IndexOf(LowerCase(Copy(Memo1.Text, a, i - a))) > -1 Then Begin
              al.Items[strL.IndexOf(LowerCase(Copy(Memo1.Text, a, i - a)))] := al.Items[strL.IndexOf(LowerCase(Copy(Memo1.Text, a, i - a)))] + 1;
               a := i + 1;
            End
            Else Begin
              strL.Add(LowerCase(Copy(Memo1.Text, a, i - a)));
              al.Add(1);
              a := i+1 ;
            End;
          End;
        End;
         for  i := 0 to strL.Count-1 do
         begin
           ListBox1.Items.Add(strL.Strings[i]+' = '+ IntToStr(al.Items[i]))
         end;
      End;
  • 相关阅读:
    windows 的文件夹映射实现
    项目管理工具
    SSM(Spring+SpringMVC+MyBatis)高并发优化思路
    高性能高可用高并发技术架构的一些理解
    你懂什么是分布式系统吗?Redis分布式锁都不会?
    使用批处理文件(*.bat)同时打多个cmd窗口
    mysql删除重复数据只保留一条
    native2ascii命令
    利用编辑距离(Edit Distance)计算两个字符串的相似度
    eclipse如何正确部署tomcat7
  • 原文地址:https://www.cnblogs.com/jshchg/p/2147975.html
Copyright © 2020-2023  润新知