关于笔试题的选择 有很多种方式。无论怎么选择 一定要问自己 这个题是否可以把候选人的动手能力体现一二 是否和本岗位的实际研发技能需求贴近
我了解到 有的面试官经常从公共题库选题 有的面试官从个人题库选题 有的面试官从网上选题 有的面试官长你只用同一道题。无论哪里的题 其实核心是 具体延伸、深挖的考察点 这样可以通过互动提问过程 或者说代码review 交互过程 评估出候选人的动手、思考、交流等软硬件能力
有的笔试题 非常抽象 然后给一个简单例子。有的笔试题 非常具体 考察的点非常明确。例如案例1: 有N个队列 每个队列有M个数字 求所有队列都出现的数字。例如案例2 求A 和B 字符串的共同出现的最长子串。
一些候选人 上来就开始写代码。这不是最佳的“姿势“。应该先进行需求对齐 需要主动向面试官提问。例如案例1 队列的数字是否有序 队列的数字是否重复 队列的数字类型是否统一等。例如案例2 是直接使用lib 还是自己实现 对时间复杂度有什么要求。
加分点 主动需求沟通、需求对其。这个反应的是工作中 是否“习惯性“对需求发起对齐、确认的”意识“
有的候选人敲代码前很纠结 这个题是最快、最笨的方法实现 还是弄一个最佳的、需要仔细设计的实现 例如案例1 直接暴力的 for、hash等实现 还是排序队列求交实现
推荐 先已自己最擅长的方式 或者说最笨的方式 快速实现一个版本。然后在与面试官 讲解代码过程中 提出其他的实现方案 需要“讲“清楚关键数据结构、关机处理逻辑。
这部分最为关键 尽是细节点。也正是这些“细节”点 反应候选人在写代码过程中的点滴思考和过往经验的“折射”。
一般的考察点如下
1. 可读性、可运维性体现的点 1 函数、方法、参数的命名 2 主线逻辑、局部实现逻辑的 “组合“编排 3 For 循环的深度、If else的 简化、Case switch的简化 4 基本的注释说明 5 程序异常了 如何排查定位问题
提问
命名有什么好的经验和选择函数的行数一般多长比较合适 为什么添加新的逻辑 在这段代码哪里改 成本最小If else 是否可以精简for 循环是否可以 提前退出for、do while、while 有什么区别 使用的注意事项是什么注释怎么写比较好 为什么。例如中文注释有什么不足点 有没有GVM 调参的经验程序异常崩溃了 如何排查 一般使用哪些工具排查平时代码部署的服务器有多少台 有没有遇到部署过程中的异常问题 如何排查和解决业务是否出问题怎么识别、怎么定位、怎么解决。。。
体现的点 1 入参数的校验 2 边界条件的处理 3 循环的退出条件 4 IO资源的关闭 5 日志的输出 6 单侧的用例覆盖
提问
当前的实现 支持哪些场景、不支持哪些场景的输入边界条件是什么 为什么这么处理循环是否有提前退出的可能 是什么时候IO资源关闭 是否存在极端情况的泄漏Sytem.out 和 log 输出的差别是什么 什么时候使用system、log代码质量的保障措施有哪些 常见的测试方法有哪些 你平时使用那种方法 有什么优点、不足如果运行过程中 突然断电了会有什么问题发生如何改造 可以在服务器异常下 业务不受影响大型项目 很多同学同时研发 如何保障整体的质量Map、HashMap、List、ArrayList、Filter等基础数据结构原理和实现。。。
体现的点 1 逻辑处理的场景鉴容性 2 方法抽象定义的内聚、功能单一性 3 无状态化 减少全局变量的依赖 4 简单数据结构
提问
具体代码考虑的场景是否充分 例如还其他的输入的影响 结合这个笔试题 用面向对象的概念分析、介绍下 服务器异常 快速从另外一个服务器拉起应用 当前实现是否可行 有什么需要改造的复杂均衡怎么实现限流降级怎么实现切面是否有帮助配置中心是否有帮助 为什么是否可以跑在云端 如何改造做为公共Tool 类 还需要做哪些改造你觉得企业内部代码是否应该全员开放 为什么Java、GO、C 、Python等语言的差异是什么 你喜欢哪种语言 为什么。。。
体现的点 1 算法本身的复杂度 2 分布式实现方案 3 其他的组合算法实现
提问
for循环可否去掉 为什么是否有分布式的实现方案是否可以多算法组合进行优化 怎么做如何控制软件的复杂度 重构是怎么理解的 什么时候需要重构 重构需要避免哪些坑架构设计有什么作用 架构设计和复杂度优化是否有关系 如何通过架构设计降低复杂度复用第三方jar 和自己实现 有什么异同 需要注意什么。。。
体现的点 1 内存优化 2 IO优化 3 网络优化 4 多线程优化 5 分布式版本实现 6 GC友好优化 7 Cache 优化 8 任务拆分
提问
输入参数非常大 内存装不下 怎么优化频繁的内存、磁盘交换 有什么问题 如何优化多线程原理 本题多线程是否可以实现 如何实现单机并行、分布式并行实现的方案是什么当前算法实现 是否可以直接分布式部署使用 需要怎么改造 可以实现分布式版本当前代码实现 哪些地方可以优化 可以对GC回收友好Java GC的原理、常用回收算法其他性能优化 例如cache引入平时了解和使用的cache 算法有哪些 优缺点是什么大型项目 研发如何分工合作当前的实现方法是否可以进一拆解 大任务和小任务 例如大sql 和多个小sql 并行执行 那个更好 为什么 同步和异步的区别是什么消息引入进来 是否有帮助 为什么使用mysql 为何不使用nosql使用其他存储是否有帮助 例如es 为什么有帮助。。。
1. 接口描述 接口请求域名: cvm.tencentcloudapi.com 。 本接口(DescribeImages...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
面临的场景 金融风控 用户画像库 爬虫抓取信息 反欺诈系统 订单数据 个性化推荐 ...
当前,以新一代人工智能为代表的科技和产业革命正在孕育兴起。数字化、网络化、...
9月11日,在腾讯全球数字生态大会大数据专场上,腾讯云重磅发布了全链路数据开发...
随着对云计算技术使用的增加,组织应考虑实施多云战略,以降低总体成本,并改善...
01、前世今生 我叫 Gson,是一款开源的 Java 库,主要用途为序列化 Java 对象为 ...
海口地处海南岛北部 是海南省的省会城市。2018年4月 海口同阿里云达成合作 计划...
一、活动对象 云服务器产品新用户,即在阿里云实名认证后首次购买ECS云服务器或...
这篇文章大致讲讲需要用到的后端技术。其实如果只是小数据量,或者是一些小型的...