2013百度研发笔试

一、简答题

1. 动态链接库和静态链接库的优缺点

2. 轮询任务调度和可抢占式调度有什么区别?

3. 列出数据库中常用的锁及其应用场景

 

二、算法设计题

1. 给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11是相等的两个相邻位故不是不重复数,而12301是不重复数。

2. 设N是一个大整数,求长度为N的字符串的最长回文子串。

3. 坐标轴上从左到右依次的点为a[0]、a[1]、a[2]……a[n-1],设一根木棒的长度为L,求L最多能覆盖坐标轴的几个点?

 

三、系统设计题

1. 在现代系统的设计过程中,为了减轻请求的压力,通常采用缓存技术,为了进一步提升缓存的命中率,同常采用分布是缓存方案。调度模块针对不同内容的用户请求分配给不同的缓存服务器向用户提供服务。请给出一个分布式缓存方案,满足如下要求:

1) 单台缓存服务器故障,整个分布式缓存集群,可以继续提供服务。

2)通过一定得分配策略,可以保证充分利用每个缓存服务的存储空间,及负载均衡。当部分服务器故障或系统扩容时,改分配策略可以保证较小的缓存文件重分配开销。

3)当不同缓存服务器的存储空间存在差异时,分配策略可以满足比例分配

下面给出我自己的一些解答,不保证100%正确,欢迎批评指正。

 

一、简答题

1. 动态链接库和静态链接库的优缺点

动态链接库:是在程序运行时被使用的函数库,在linux中以.so为后缀,windows中以.dll为后缀。

优点:多次调用时只需要内存中加载一次,节省了内存空间和页面交换。

        由于在运行时调用,减小了最终可执行文件的大小。

        可以在不编译连接的情况下,只要输出接口不变(名称,参数,返回类型和调用约定)更改动态库实现程序的修改。

适用于大规模的开发,使开发过程独立,耦合度小,便于不同开发者之间合作及测试。

缺点:应用程序不是自完备的,如果找不到动态链接库,程序会报错;

        速度比静态链接慢;

        当某模块更新后,若与旧模块不兼容,那么需要改模块的程序统统出错。

静态链接库:程序在编译时添加到代码中,linux中以.a为后缀,windows中以.lib为后缀。

优点:代码装载速度快,执行速度比动态链接库较快;

   只要有静态链接库,就可以执行,不存在版本问题,不会引发dll地狱问题。

缺点:文件体积较大,多处包含重复代码,造成浪费。

 

2. 轮询任务调度和可抢占式调度有什么区别

轮询任务调度:是指按照请求的顺序将请求从1到N分配到服务器上。只有当请求挂起时,才会使服务器被其他请求占用。

抢占式调度:按照请求的优先级别对请求进行先后分配。优先级别越高,越早分配。但是实现过程较复杂,级别较低的请求可能一直到不到分配。

 

3. 列出数据库中常用的锁及其应用场景

    (1)共享锁:(S锁),粒度为行或元组,当事务获取共享锁后,可以对锁定的内容执行读操作。

    (2)排他锁:(X锁),粒度为行或元组,当事务获取排他锁,对锁定的内容可执行写操作。

      T1获取了一个元组的共享锁,其他事务也可以获取该元组的共享锁,但不能获取排他锁。

      T2获取了一个元组的排他锁,其他事务不可以获取该元组的共享锁和排他锁。

    (3)更新锁:避免了两个事务共享锁同时转换为排他锁的过程中形成的死锁。一次只有一个事务可以获得对象的更新锁。当事务要修改对象时,更新锁改为排他锁。当事务只读取对象时,更新锁改为共享锁。

    (4)意向锁:包含意向共享锁,意向排它锁和共享意向排它锁。如果对一个结点加意向锁,说明该结点的下层结点正在被加锁;对任意结点加锁时,必须先对它的上层结点加意向锁。这样事务对表加锁时,不需要检查每行记录的锁标志位,系统效率大大提高。释放锁时则应按自下而上的次序进行。具有意向锁的多粒度封锁方法提高了系统的并发度,减少了加锁和解锁的开销。

  意向共享锁(IS锁):如果对一个数据对象加IS锁,表示它的后裔结点拟加S锁。例如,事务T1要对R1中某个元组加S锁,则要先对关系R1和数据库加IS锁。

  意向排它锁(IX锁):如果对一个数据对象加IX锁,表示它的后裔结点拟加X锁。例如,事务T1要对R1中某个元组加X锁,则要先对关系R1和数据库加IX锁。

  共享意向排它锁(SIX锁):如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX=S+IX。例如,对某个表加SIX锁,则表示该事务要读取整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加IX锁)。

 

二、算法设计题

1.n为正整数,求比这个数大且最小的不重复数,重复数为相邻两位数字相同,如1101为重复数,1231为不重复数。

未完待续

转载于:https://www.cnblogs.com/lzh-cnblogs/p/3539615.html

AI 代码审查Review工具 是一个旨在自动化代码审查流程的工具。它通过集成版本控制系统(如 GitHub 和 GitLab)的 Webhook,利用大型语言模型(LLM)对代码变更进行分析,并将审查意见反馈到相应的 Pull Request 或 Merge Request 中。此外,它还支持将审查结果通知到企业微信等通讯工具。 一个基于 LLM 的自动化代码审查助手。通过 GitHub/GitLab Webhook 监听 PR/MR 变更,调用 AI 分析代码,并将审查意见自动评论到 PR/MR,同时支持多种通知渠道。 主要功能 多平台支持: 集成 GitHub 和 GitLab Webhook,监听 Pull Request / Merge Request 事件。 智能审查模式: 详细审查 (/github_webhook, /gitlab_webhook): AI 对每个变更文件进行分析,旨在找出具体问题。审查意见会以结构化的形式(例如,定位到特定代码行、问题分类、严重程度、分析和建议)逐条评论到 PR/MR。AI 模型会输出 JSON 格式的分析结果,系统再将其转换为多条独立的评论。 通用审查 (/github_webhook_general, /gitlab_webhook_general): AI 对每个变更文件进行整体性分析,并为每个文件生成一个 Markdown 格式的总结性评论。 自动化流程: 自动将 AI 审查意见(详细模式下为多条,通用模式下为每个文件一条)发布到 PR/MR。 在所有文件审查完毕后,自动在 PR/MR 中发布一条总结性评论。 即便 AI 未发现任何值得报告的问题,也会发布相应的友好提示和总结评论。 异步处理审查任务,快速响应 Webhook。 通过 Redis 防止对同一 Commit 的重复审查。 灵活配置: 通过环境变量设置基
【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器的状态空间平均模型的建模策略。该方法通过数学建模手段对直流微电网系统进行精确的状态空间描述,并对其进行线性化处理,以便于系统稳定性分析与控制器设计。文中结合Matlab代码实现,展示了建模与仿真过程,有助于研究人员理解和复现相关技术,推动直流微电网系统的动态性能研究与工程应用。; 适合人群:具备电力电子、电力系统或自动化等相关背景,熟悉Matlab/Simulink仿真工具,从事新能源、微电网或智能电网研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网的动态建模方法;②学习DC-DC变换器在耦合条件下的状态空间平均建模技巧;③实现系统的线性化分析并支持后续控制器设计(如电压稳定控制、功率分配等);④为科研论文撰写、项目仿真验证提供技术支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐步实践建模流程,重点关注状态变量选取、平均化处理和线性化推导过程,同时可扩展应用于更复杂的直流微电网拓扑结构中,提升系统分析与设计能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值