云服务器免费试用

C++ 后台开发面试时一般考察什么丨C++面试考题准备

服务器知识 0 964

一、自我介绍

先说下我的个人经历,我刚工作的前几年做股票、期货、现货的交易系统,后来去二三四五做战略软件,再后来去声网做信令,再后来去了携程旅行网做基础框架业务,用的都是 C/C++,如今在某大厂,畅销书《C++ 服务器开发精髓》一书作者,参与过很多大型商业 C++ 系统的架构与设计。

C++ 后台开发面试时一般考察什么丨C++面试考题准备

二、C++ 后台考察什么

总体来说,C++面试中,对这门语言本身内容的考察并不多,更多考察的是 C++ 背后的技术栈,更多倾向考察一些原理性和基础性的问题,高级岗位会考察一些工作经历和经验。

总结起来一句话:初级看基础,高级看经验。

2.1 C/C++ 语言基础

对于初级岗位如果在基础问题上答不好,面试挂的几率就比较大。举个例子,对于一个初级岗位来说,假设有如下面试题:

//下列代码输出结果是啥?
#include te style="margin-top: 1.4em; margin-bottom: 1.4em; padding-left: 1em; color: #646464; border-left-color: #d3d3d3; font-family: -apple-system, system-ui, 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', sans-serif; font-size: 16px; text-align: start; white-space: pre-wrap; background-color: #ffffff;" data-block="true" data-editor="f1uvo" data-offset-key="38lhv-0-0">

2.2 算法与数据结构基础

对于一些名不见传的小公司来说,算法和数据结构可能只会象征性地考察一下,或者不考察,但是对于有一定规模的公司或者像 BAT 这样的大厂,是必考项目,且对社招人士和应届生的要求是不一样的。下面根据我当面试官面试别人和找工作被别人面试经验来谈一谈。

先说考察的内容,除了一些特殊的岗位,常见的算法和数据结构面试问题有如下:

  1. 排序(常考的排序按频率考排序为:快速排序 te, -apple-system-font, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei UI', 'Microsoft YaHei', Arial, sans-serif;"> 

注意:在考察算法和数据结构的同时可能会考察编码基本功

 

编码基本功不仅包括编码风格、计算机英语水平、调试能力等,还包括你对细节的掌握和易错点理解,如有意识地对边界条件的检查和非法值的过滤。请读者看以下的代码执行结果是什么?(我去北京中关村的鼎普面试的问题)

for(char i = 0; i te, -apple-system-font, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei UI', 'Microsoft YaHei', Arial, sans-serif; background-color: #ffffff; white-space: pre-wrap;">我刚工作那会儿,做股票行情服务器的底层服务开发,需要熟悉网络编程,那会儿天天下班抱着这本书看,建议小白把书中的网络通信代码都自己敲一遍。

我们面试一些同学时,发现很多同学写的网络通信程序在本机测试没问题,一拿到局域网或者测试环境就不能正常工作,这本书会告诉你答案。

2.5 数据库

数据库知识一般在大的互联网企业对应届生不做硬性要求,对于小的互联网企业或社会人士一般有一定的要求。其要求一般包括:

  • 熟悉基本 SQL 操作 包括增删改查(insert、delete、update、select语句),排序 order,条件查询(where 子语句),限制查询结果数量(LIMIT语句)等
  • 稍微高级一点的 SQL 操作(如Group by,in,join,left join,多表联合查询,别名的使用,select 子语句等)
  • 索引的概念、索引的原理、索引的创建技巧
  • 数据库本身的操作,建库建表,数据的导入导出
  • 数据库用户权限控制(权限机制)
  • MySQL的两种数据库引擎的区别
  • SQL 优化技巧

以上属于对开发的基本的数据库知识要求,你可以找一本相关入门级的数据库图书学习即可。

 

高级开发除了以上要求还要熟悉高可用 MySQL主从同步读写分离分表分库等技术,这些技术的细节一定要清楚,它们是你成为技术专家或者高级架构的必备知识。我们在实际面试时,在讨论高可用服务服务方案时,很多面试者也会和我们讨论到这些技术,但是不少面试者只知道这些技术的大致思想,细节往往说不清楚,细节不会就意味着你的高可用方案无法落地,企业需要可以落地的方案。

 

这些技术我首推《高性能 MySQL》这本书,这本书高级开发者一定要通读的,另外还有 2 本非常好的图书也推荐一下:一本是《MySQL 排错指南》,读完这本书以后,你会对整个“数据库世界”充满了清晰的认识;另外一本是《数据库索引设计与优化》,这本书读起来非常舒服,尤其是对于喜欢算法和数据结构的同学来说。

2.6 内存数据库/缓存技术

时下以内存数据库为技术实现的缓存技术被广泛地应用于各个大小应用,所以缓存技术通常是基本要求,这里通常指的就是 Redis。

  • 第一层面一般是对 Redis 的基础用法的考察 如考察 redis 支持的基础数据类型、redis的数据持久化、事务等。

  • 第二层面不仅考察 redis 的基础用法,还会深入到 Redis 源码层面上,如 Redis 的网络通信模型、Redis 各种数据结构的实现等等。

  • Redis 高可用、RDB/AOF 存储、cluster、哨兵策略等。

无论是从找工作应付面试还是从提高技术的角度,Redis 是一个非常值得学习的开源软件,希望广大读者有意识地去了解、学习它。

2.7 项目经验

除了社会招聘和一些小型的企业,一般的大型互联网公司对应届生不会做过多的项目经验要求,而是更希望应届生算法与数据结构等基础扎实、动手实践能力强即可

 

对于一般的小公司,对于应届生会要求其至少熟练使用一门编程语言以及相应的开发工具,号称熟悉 Linux C++ 开发的面试者,不熟悉 GDB 调试基本上不是真正的熟悉 Linux C++ 开发,基本是说不过去的。

这里给一些学历不算好,学校不是非常有名,尤其是二本以下的广大想进入 IT 行业的同学一个建议,在大学期间除了要学好计算机专业基础知识以外,一定要熟练使用一门编程语言以及相应的开发工具。

 

关于项目经验,许多面试者认为一定要是自己参与的项目,其实你的项目经验也可以来源于你学习和阅读他人源码或开源软件的源码,如果你能理解并掌握这些开源软件中的思想和技术,在面试的时候能够与面试官侃侃而谈,面试官也会非常满意的。

 

我去喜马拉雅听书面试的时候,整个面试过程下来,就聊了 Redis,从 Redis 应用到源码。

 

很多同学可能纠结大学或者研究生期间要不要跟着导师做一些项目。当然,如果这些项目是课程要求,那么你必须得参加;如果这些项目是可以选择性的,尤其是一些仅仅拿着第三方的库进行所谓的包装和加工,那么建议可以少参加一些。

更多资讯欢迎关注全球主机测评网,我们将为您提供更多最新最全的行业资讯

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C++ 后台开发面试时一般考察什么丨C++面试考题准备
本文地址: https://solustack.com/49179.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。