C++笔试题整理

双11提前购!买周边/年卡,一键领4重福利! 送200元神券包+10%红包返利+最高10年VIP!还能抽iPhone18Pro!仅限1次,速抢>> 阅读详情

目录

 

1. 笔试题1

1.1 链表反转

1.2 String

2. 笔试题2

2.1 求下面函数的返回值(微软)

2.2 什么是“引用”?申明和使用“引用”要注意哪些问题?

2.3 将“引用”作为函数参数有哪些特点?

2.4 在什么时候需要使用“常引用”? 

2.5 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?

2.6 “引用”与多态的关系?

2.7 “引用”与指针的区别是什么?

2.8 什么时候需要“引用”?

2.9 结构与联合有和区别?

2.10 下面关于“联合”的题目的输出?

2.11 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。

2.12 已知String类定义如下:

2.13 .h头文件中的ifndef/define/endif 的作用?

2.14 #i nclude 与 #i nclude "file.h"的区别?

2.15 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?

2.16 关联、聚合(Aggregation)以及组合(Composition)的区别?

2.17 面向对象的三个基本特征,并简单叙述之?

2.18 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

2.19 多态的作用?

2.20 Ado与Ado.net的相同与不同?

2.21 New delete 与malloc free 的联系与区别?

2.22. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?

2.23 有哪几种情况只能用intialization list 而不能用assignment?

2.24 C++是不是类型安全的?

2.25 main 函数执行以前,还会执行什么代码?

2.26 描述内存分配方式以及它们的区别?

2.27 struct 和 class 的区别

2.28 当一个类A 中没有生命任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)

2.29 在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel)

2.30 比较C++中的4种类型转换方式?

2.31 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

2.32 请说出const与#define 相比,有何优点?

2.33 简述数组与指针的区别?

2.34 类成员函数的重载、覆盖和隐藏区别?

2.35 There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.

2.36. 如何打印出当前源文件的文件名以及源文件的当前行号?

2.37 main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

2.38 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

2.39 文件中有一组整数,要求排序后输出到另一个文件中

2.40 链表题:一个链表的结点结构

2.41 分析一下这段程序的输出 (Autodesk)

2.42 写一个函数找出一个整数数组中,第二大的数 (microsoft)

2.43 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。

2.44 多重继承的内存分配问题:

2.45 如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针)

3. 笔试题3

3.1 C和C++的区别

3.2 C++中指针和引用的区别

3.3 结构体struct和共同体union(联合)的区别

3.4 #define和const的区别

3.5 重载overload,覆盖override,重写overwrite,这三者之间的区别

3.6 new、delete、malloc、free之间的关系

3.7 delete和delete[]的区别

3.8 STL库用过吗?常见的STL容器有哪些?算法用过几个?

3.9 const知道吗?解释一下其作用

3.10 虚函数是怎么实现的

3.11 堆和栈的区别

3.12 关键字static的作用

3.13 STL中map和set的原理(关联式容器)

3.14 #include #include "file.h" 的区别

3.15 什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法?

3.16 定义和声明的区别

3.17 C++文件编译与执行的四个阶段

3.18 STL中的vector的实现,是怎么扩容的?

3.19 STL中unordered_map和map的区别

3.20 C++的内存管理

3.21 构造函数为什么一般不定义为虚函数?而析构函数一般写成虚函数的原因 ?

3.22 静态绑定和动态绑定的介绍

3.23 引用是否能实现动态绑定,为什么引用可以实现

3.24 深拷贝和浅拷贝的区别

3.25 什么情况下会调用拷贝构造函数(三种情况) 

3.26 C++的四种强制转换 

3.27 调试程序的方法 

3.28 extern“C”作用

3.29 typdef和define区别

3.30 volatile关键字在程序设计中有什么作用

3.31 引用作为函数参数以及返回值的好处

3.32 纯虚函数

3.33 什么是野指针

3.33 线程安全和线程不安全

3.34 C++中内存泄漏的几种情况

3.35 栈溢出的原因以及解决方法

3.36 C++标准库vector以及迭代器

3.37 C++ 11有哪些新特性

3.38 C++中vector和list的区别

3.39 C语言的函数调用过程

3.40 C++中的基本数据类型及派生类型

3.41 友元函数和友元类

3.42 C++线程中的几种锁机制


 

1. 笔试题1

 

1.1 链表反转

单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。

 

最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:

struct linka {
    int data;
    linka* next;
};
void reverse(linka*& head) {
    if(head ==NULL)
        return;
    linka *pre, *cur, *ne;
    pre=head;
    cur=head->next;
    while(cur)
    {
       ne = cur->next;
       cur->next = pre;
       pre = cur;
       cur = ne;
    }
    head->next = NULL;
    head = pre;
}

还有一种利用递归的方法。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下:

linka* reverse(linka* p,linka*& head)
{
    if(p == NULL || p->next == NULL)
    {
       head=p;
       return p;
    }
    else
    {
       linka* tmp = reverse(p->next,head);
       tmp->next = p;
       return p;
    }
}

 

1.2 String

已知String类定义如下:

class String
{
    public:
        String(const char *str = NULL); // 通用构造函数
        String(const String &another); // 拷贝构造函数
        ~ String(); // 析构函数
        String & operater =(const String &rhs); // 赋值函数
    private:
        char *m_data; // 用于保存字符串
};

尝试写出类的成员函数实现。

答案:

String::String(const char *str)
{
    if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
    {
        m_data = new char[1] ;
        m_data[0] = '/0' ;
    }
    else
    {
        m_data = new char[strlen(str) + 1];
        strcpy(m_data,str);
    }
} 

String::String(const String &another)
{
    m_data = new char[strlen(another.m_data) + 1];
    strcpy(m_data,other.m_data);
}

String& String::operator =(const String &rhs)
{
    if ( this == &rhs)
        return *this ;
    delete []m_data; //删除原来的数据,新开一块内存
    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
}

String::~String()
{
    delete []m_data ;
}

 

2. 笔试题2

 

2.1 求下面函数的返回值(微软)

int func(x)
{
    int countx = 0;
    while(x)
    {
        countx ++;
        x = x&(x-1);
    }
    return countx;
}

        假定x = 9999。 答案:8

        思路:将x转化为2进制,看含有的1的个数。

 

2.2 什么是“引用”?申明和使用“引用”要注意哪些问题?

答:

        引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。

        申明一个引用的时候,切记要对其进行初始化。

        引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。

        声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。

       不能建立数组的引用。

 

2.3 将“引用”作为函数参数有哪些特点?

        1. 传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

        2. 使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

        3. 使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

 

2.4 在什么时候需要使用“常引用”? 

        如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。

        常引用声明方式:const 类型标识符 &引用名=目标变量名;

        例1

                 int a ;

                const int &ra=a;

                ra=1; //错误

                a=1; //正确

        例2

                string foo( );

                void bar(string & s);

                那么下面的表达式将是非法的:

                bar(foo( ));

                bar("hello world");

               原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。

        引用型参数应该在能被定义为const的情况下,尽量定义为const 。

 

2.5 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?

        格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }

        好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!

        注意事项:

                1. 不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。

                2. 不能返回函数内部new分配的内存的引用。这条可以参照Effective C++[1]的Item 31。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成memory leak。

                3. 可以返回类成员的引用,但最好是const。这条原则可以参照Effective C++[1]的Item 30。主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。

                4. 流操作符重载返回值申明为“引用”的作用:

                        流操作符<<和>>,这两个操作符常常希望被连续使用,例如:cout << "hello" << endl; 因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。可选的其它方案包括:返回一个流对象和返回一个流对象指针。但是对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象,也就是说,连续的两个<<操作符实际上是针对不同对象的!这无法让人接受。对于返回一个流指针则不能连续使用<<操作符。因此,返回一个流对象引用是惟一选择。这个唯一选择很关键,它说明了引用的重要性以及无可替代性,也许这就是C++语言中引入引用这个概念的原因吧。

                        赋值操作符=。这个操作符象流操作符一样,是可以连续使用的,例如:x = j = 10;或者(x=10)=100;赋值操作符的返回值必须是一个左值,以便可以被继续赋值。因此引用成了这个操作符的惟一返回值选择。

                        例3

                        #include <iostream.h>

                        int &put(int n);

                        int vals[10];

                        int error=-1;

                        void main()

                        {

                                put(0)=10; //以put(0)函数值作为左值,等价于vals[0]=10;

                                put(9)=20; //以put(9)函数值作为左值,等价于vals[9]=20;

                                cout<<vals[0];

                                cout<<vals[9];

                        }

                        int &put(int n)

                        {

                                if (n>=0 && n<=9 ) return vals[n];

                                else { cout<<"subscript error"; return error; }

                        }

                5. 在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用,Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。

 

2.6 “引用”与多态的关系?

        引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。

        例4

                Class A;

                Class B : Class A{...};

                B b;

                A& ref = b;

 

2.7 “引用”与指针的区别是什么?

        指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。此外,就是上面提到的对函数传ref和pointer的区别。

 

2.8 什么时候需要“引用”?

        流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。

 

2.9 结构与联合有和区别?

        1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

        2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

 

2.10 下面关于“联合”的题目的输出?

a)

#include <stdio.h>
Union
{
    int i;
    char x[2];
}a;

void main()
{
    a.x[0] = 10;
    a.x[1] = 1;
    printf("%d",a.i);
}

答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)

 

b)

main()
{
    union{ /*定义一个联合*/
        int i;
        struct{ /*在联合中定义一个结构*/
            char first;
            char second;
        }half;
    }number;
    
    number.i=0x4241; /*联合成员赋值*/
    printf("%c%c/n", number.half.first, mumber.half.second);
    number.half.first='a'; /*联合中结构成员赋值*/
    number.half.second='b';
    printf("%x/n", number.i);
    getch();
}

答案: AB (0x41对应'A',是低位;Ox42对应'B',是高位)

           6261 (number.i和number.half共用一块地址空间)

 

2.11 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。

答案:

char *strcpy(char *strDest, const char *strSrc)
{
    if ( strDest == NULL || strSrc == NULL)
        return NULL ;
    if ( strDest == strSrc)
        return strDest ;
    char *tempptr = strDest ;
    while( (*strDest++ = *strSrc++) != ‘/0’) 
    {
    }
    return tempptr ;
}

 

2.12 已知String类定义如下:

class String
{
    public:
        String(const char *str = NULL); // 通用构造函数
        String(const String &another); // 拷贝构造函数
        ~ String(); // 析构函数
        String & operater =(const String &rhs); // 赋值函数
    private:
        char *m_data; // 用于保存字符串
};

尝试写出类的成员函数实现。

 

答案:

   

String::String(const char *str)
{
    if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
    {
        m_data = new char[1] ;
        m_data[0] = '/0' ;
    }
    else
    {
        m_data = new char[strlen(str) + 1];
        strcpy(m_data,str);
    }
} 

String::String(const String &another)
{
    m_data = new char[strlen(another.m_data) + 1];
    strcpy(m_data,other.m_data);
}

String& String::operator =(const String &rhs)
{
    if ( this == &rhs)
        return *this ;
    delete []m_data; //删除原来的数据,新开一块内存
    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
}

String::~String() 
{
    delete []m_data ;
}

 

2.13 .h头文件中的ifndef/define/endif 的作用?

        答:防止该头文件被重复引用。

 

2.14 #i nclude<file.h> 与 #i nclude "file.h"的区别?

        答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。

 

2.15 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?

        extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。

 

2.16 关联、聚合(Aggregation)以及组合(Composition)的区别?

        涉及到UML中的一些概念:关联是表示两个类的一般性联系,比如“学生”和“老师”就是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责。

        从实现的角度讲,聚合可以表示为:

                 class A {...} class B { A* a; .....}

        而组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责。

        实现的形式是:

                class A{...} class B{ A a; ...}

 

2.17 面向对象的三个基本特征,并简单叙述之?

        1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)。

        2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。

        3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

 

2.18 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

        从定义上来说:

                重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

                重写:是指子类重新定义父类虚函数的方法。

        从实现原理上来说:

               重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:void func(p:integer)和void func(p:string);。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

              重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

 

2.19 多态的作用?

        主要是两个:

                1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;

                2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

 

2.20 Ado与Ado.net的相同与不同?

        除了“能够让应用程序处理存储于DBMS 中的数据“这一基本相似点外,两者没有太多共同之处。但是Ado使用OLE DB 接口并基于微软的COM 技术,而ADO.NET 拥有自己的ADO.NET 接口并且基于微软的.NET 体系架构。众所周知.NET 体系不同于COM 体系,ADO.NET 接口也就完全不同于ADO和OLE DB 接口,这也就是说ADO.NET 和ADO是两种数据访问方式。ADO.net 提供对XML 的支持。

 

2.21 New delete 与malloc free 的联系与区别?

        答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.

 

2.22. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?

        答案:i 为30。

        直接展开:5 * x + x,所以当x为5时,是30。

        如果是 #define DOUBLE(x) (x + x),则展开为:5 * (x + x),则结果是50。

 

2.23 有哪几种情况只能用intialization list 而不能用assignment?

        答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。

 

2.24 C++是不是类型安全的?

        答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

 

2.25 main 函数执行以前,还会执行什么代码?

        答案:全局对象的构造函数会在main 函数之前执行。

 

12道C++经典笔试题及答案(2022) 这里整理了12道C++经常遇到的笔试题以及答案 阅读详情

相关推荐

【C++复习】经典笔试题

C++经典笔试题

Ape's IT Blog 2010

C++笔试题(很全的)

很辛苦的找到的,比较全 表示已有答案 表示没有处理 表示答案不确定 C++笔试题 1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的? 答案:虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键.

C++笔试题汇总(含答案与分析)

这是本人亲自总结的C++笔试题汇总,参考了网络很多C++笔试题(包括各大IT公司,游戏公司),挑选出了一些经典的题和难题做解析。 作用:对工作面试笔试和C++水平提高很有用处 内容:C++,STL等;

C++笔试题附带答案

1、 什么是类和对象? 2、 成员函数通过什么来区分不同对象的成员数据,为什么它能够区分? 3、 拷贝构造函数在哪几种情况下会被调用? 4、 什么时候必须重写拷贝构造函数? 5、 如果定义一个类的对象,该类是一个派生类,并且类中有成员对象时,该对象的构造过程是怎样的? 6、 哪几种情况必须用到初始化成员列表?

C++笔试题(附答案),有难度

欧美某著名浏览器公司的C++笔试题,很有挑战性!

zemax显微镜设计

光学显微镜(Optical Microscope,简写OM)是利用光学原理,把人眼所不能分辨的微小物体放大成像,以供人们提取微细结构信息的。我这里是插入进来之后才反转,如果之前已经在目镜的单独文件夹反转过了就不用了。将目镜的焦距设定为25mm,通过缩放,然后将镜头调转过来。镜头数据中的曲率半径、物距像距都设置为变量。将镜头的焦距整体变为16.25mm。将孔径类型设置为按照光阑尺寸浮动。打开物镜的文件,选择插入镜头。由英国物理学家虎克制作。2、像空间孔径0.25。3、像面大小-0.9。

fendoudecheng的博客 8534

RK3568开发板Debian系统屏幕旋转终极指南:从临时调整到永久设置

本文提供了RK3568开发板在Debian系统下实现屏幕旋转的完整解决方案。从使用xrandr命令进行临时调整,到修改X11配置文件实现永久设置,详细讲解了操作步骤与核心原理。指南还涵盖了多屏异显配置、触摸屏坐标校准等进阶技巧,帮助开发者彻底解决显示方向问题。

weixin_29181861的博客 384

【牛股启动线】副图指标使用技术说明,图文案例分享,通达信炒股指标

如上图,在紫色线在黑色虚线上时,在出现紫色柱线时,通常会出现强势拉升的行情​。柱线加长加上紫色线上扬,进场跟随做多抓强势行情,紫色柱线和紫色线同时做多持续则可以继续持股。如上图,副图指标【牛股启动线】,指标信号包括紫色线走势信号和紫色柱线信号,以及底部的四条虚线技术信号​,还有一条绿色的参考线,一条黑色的虚线两天分档线。如上图,参考买点,紫色柱线开始出现时进场买点,在上图标记的位置对应的就是进场买点​。紫色柱线加长+紫色线上扬,多头共振持股,行情继续拉升阶段,持股待涨或顺势​进场做多。

weixin_69760830的博客 1888

医疗领域BGE-M3模型微调全流程:从数据准备到效果评估

本文详细介绍了医疗领域BGE-M3模型的微调全流程,从数据准备到效果评估。通过医疗数据微调,BGE-M3模型在临床问答、病历检索等场景中表现显著提升,能够准确理解医学术语之间的细微差别。文章还提供了实战练习代码和效果评估指标,帮助开发者快速掌握医疗文本嵌入模型的应用技巧。

weixin_29098367的博客 278

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1804

把静态前端托管进 SAP BTP:HTML5 Application Deployer 与企业级内容部署全攻略

本文介绍了在SAP BTP Cloud Foundry环境中使用HTML5 Application Repository托管前端静态资源的工程化实践。通过HTML5 Application Deployer工具,结合MTA描述、路由配置和服务实例,实现前后端解耦和标准化部署。文章详细阐述了目录结构、关键配置文件、MTA编排以及构建部署流程,并针对大体积前端资源提供了GACD和异步上传两种解决方案。最后说明了如何与AppRouter协同工作,使部署内容可供终端用户访问。这套方法使前端更新无需重启后端,支持团队

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 152

[Python] 为什么你的脚本明明没报错,却什么也没发生?

Python脚本运行后没报错却没结果?这是许多开发者遇到的棘手问题。文章分析了六种常见原因:代码未进入目标逻辑分支、输出路径错误、中间数据为空、异常被吞掉、异步操作未完成、运行了错误脚本版本。建议通过"过程可视化"排查,如打印关键变量、检查工作目录、验证数据状态等。职场中更应关注结果验证而非单纯代码执行,确保脚本真正解决问题。建立结果验证意识是从"会写代码"到"稳定交付"的关键转变。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 293

推荐系统[六]:混排算法简介、研究现状混排技术以及MDP-DOTA信息流第三代混排调控框架,高质量项目实战。

混排是指将多个不同的推荐结果混合在一起,以提供更多样化的选择和更全面的覆盖。混排的目的是为了避免推荐系统出现过度偏向某些内容或类型的情况,从而提高推荐的多样性和准确性。混排的实现方式通常是基于多种推荐算法和数据源,通过加权和组合的方式来生成最终的推荐结果。信息流推荐算法的核心是理解用户兴趣,捕捉用户逛买意图,并据此做到高效的人货匹配。

丨汀、的博客 1923

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: C#初级教程学习笔记006-函数--End
下一篇: C#中级教程学习笔记001-调试和错误处理
公众号:程序喵星人
博客等级 码龄15年 14粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公众号:程序喵星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值