常见面试题

一、

问题:

25匹马,5个跑道,每个跑道最多能有5匹马进行比赛,最少比多少次能比出前3名?前5名?

参考答案:

找出前3名最少需要7场就可以确定。首先我们将25匹⻢马分成5组,分别为ABCDE,5组分别进行比赛决出各小组名次;接着让各小组第一进行比赛决出冠军,我们假设各小组第一分别是A1, B1, C1, D1, E1,并且速度A1 > B1 > C1 > D1 > E1;接着2,3名可以在一场比赛内决出,分别由A2, A3, B1, B2, C1参赛;这样总共进行了5 + 1 + 1 = 7场; 找出前5名的思路和这个类似。

二、

问题:

100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?

参考答案:

内存足够的情况: 可以使⽤用类似quick sort的思想进行,均摊复杂度为O(n),算法思想如下: 
• 随机选取一个元素,将比它小的元素放在它左边,比它大的元素放在右边 
• 如果它恰好在中位数的位置,那么它就是中位数,可以直接返回 
• 如果小于它的数超过一半,那么中位数一定在左半边,递归到左边处理 
• 否则,中位数一定在右半边,根据左半边的元素个数计算出中位数是右半边的第几大,然后递归 到右半边处理 
内存不⾜足的情况: 
方法⼀:⼆分法 
思路:一个重要的线索是,这些数都是整数。整数就有范围了,32位系统中就是[-2^32, 2^32- 1], 有了范围我们就可以对这个范围进行二分,然后找有多少个数⼩于Mid,多少数大于mid,然后递归, 和基于quicksort思想的第k大⽅方法类似 
方法二:分桶法 思路:化大为小,把所有数划分到各个小区间,把每个数映射到对应的区间⾥里,对每个区间中数的 个数进行计数,数一遍各个区间,看看中位数落在哪个区间,若够小,使⽤用基于内存的算法,否则 继续划分

三、

问题:

引用和指针有什么区别?

参考答案:

本质:引用是别名,指针是地址,具体的: 
• 指针可以在运行时改变其所指向的值,引用一旦和某个对象绑定就不再改变 
• 从内存上看,指针会分配内存区域,而引用不会,它仅仅是一个别名 
• 在参数传递时,引用会做类型检查,而指针不会 
• 引用不能为空,指针可以为空

四、

问题:

const和define有什么区别?

参考答案:

本质:define只是字符串替换,const参与编译运行,具体的: 
• define不会做类型检查,const拥有类型,会执行相应的类型检查 
• define仅仅是宏替换,不占⽤用内存,⽽而const会占用内存 
• const内存效率更高,编译器通常将const变量保存在符号表中,而不会分配存储空间,这使得它成 为一个编译期间的常量,没有存储和读取的操作

五、

问题:

define和inline有什么区别?

参考答案:

本质:define只是字符串替换,inline由编译器控制,具体的: 
• define只是简单的宏替换,通常会产生二义性;而inline会真正地编译到代码中 
• inline函数是否展开由编译器决定,有时候当函数太大时,编译器可能选择不展开相应的函数

转载于:https://www.cnblogs.com/wangjzh/p/4797788.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 话管理: SQLAlchemy 使用话(Session)来管理对象的持久化状态。 话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值