Python开发面经-24届-华od
背景 在朋友圈看到有人发OD的推荐,本人正好是计算机出身,算法有些基础,就抱着试试的心态尝试了OD面试。后来到栗栗姐门下,栗栗姐很好,很专业很有耐心,对我的帮助非常大。 机考-360分 机考还算简单根据栗栗姐题库来,不难,除了考试的时候有些紧张,紧张到简单题都写不出来。不过事情才刚刚开始怎么能放弃沉下心来耐心答题,最后也算取得了一个不错的成绩。 机考最折磨的是学习阶段,每天看代码写代码,以至于看见代码就恶心。坚持下来就好了,不灰心总会有个头的。 综测 综测按照攻略和注意事项答题就好了,然后是准备面试 HR面试 面试的简历直接就是校招的简历,HR问是否知道OD和自有员工的区别,问有没有找过工作之类的问题,没什么难度,谦虚点上进点就行。 技术一面 一面被打了个措手不及,面试官面的问题一个都没接触过,简历里两年前课堂上做的小项目被问的一句话都说不出,属于是搬起石头砸自己的脚,早知道就不写了,但是这都不写那真的啥也没有,写就写了吧,面试前多做些准备就好了,还是能说点东西的,做项目就问数据库啊文档啊项目的商业性啊之类的。 Python2 与 Python3 的区别 1、Python3去除print语句,加入print()函数实现相同的功能。 2、Python2 中/的结果是整型,Python3 中是浮点类型。 3、字符串存储的区别。python2中 字符串以 8-bit 字符串存储,python3中字符串以 16-bit Unicode 字符串存储。存储格式得到了升级。 4、取值范围的区别。python2中用xrange ,python3中用range。如:python2中的 xrange( 0, 4 ) 改为python3中的range(0,4)。 5、键盘输入的区别。从键盘录入一个字符串,python2中是 raw_input( "hello world" ),python3则是 input( "hello world" )。 6、Python2 中声明元类:_metaclass_ = MetaClass,然而在Python3 中声明元类:class newclass(metaclass=MetaClass):pass。 7、只有继承于object类的都是新式类:Python3全是新式类,Python2中没有继承于object类的叫经典类 8、Python3.6之前的字典不支持排序,3.6之后由于引入稀疏矩阵和密集矩阵存储索引和键值,字典可以被排序
--------------------------------------------------------------------------------- 重载 c,c++默认支持重载,Python需要借助两个库实现重载 1:singledispatch 单派发 - 每次只以第一个输入作区分 from singledispatch import dispatch 格式:@singledispatch def f1(): pass # 这代码就这么写,目的只是声明f1是单派发函数
@f1.register(int) # 如果第一个输入是int,就使用下面的函数 def _(A): # 函数名不重要 pass
@f1.register(float) # 如果第一个输入是float,就使用下面的函数 def _(A): pass
缺点:若是有多个输入,但输入的第一个都是int,就没法区分,会报错 2:mutipledispatch 多派发 - 可以同时区分所有输入 from mutipledispatch import dispatch 格式:@dispatch(int) # 这就不用声明哪个是重载了,直接dispatch加变量类型 def f2(a): print(a)
@dispatch(int,float) # 哪个重名了就给哪个加上这一行 def f2(a,b): print(a+b)
--------------------------------------------------------------------------------- 面向对象编程 指的就是类,python的类是根据对象的具体功能设定的,包括基本参数,用处等。 1:封装 就是把写好的类打包,之后给个接口调用。使用者只要知道类名,需要什么,有什么指令,指令有什么效果。不需要指导类里面到底是这么写的,相当于黑盒 2:继承 父类子类,比如人是父类,我是子类,我拥有人的参数、能做的一切,同时还可以有我自己独特的东西 3:多态 父类有很多子类,子类中有不同的方法,就是上面说的独特的东西
--------------------------------------------------------------------------------- 技术二面 二面好好准备了一下,回答的还可以,和面试官有说有笑的。问了个面向对象,还问了简历里面的算法是啥回事,大概是检验这东西到底是不是自己做的吧。 综面 自我介绍、之前有没有找工作、对公司的看法等、简要介绍你的项目、项目中遗传算法路径规划项目遇到的问题、 克服方法: 优化适应度值的计算方法:针对算法的求解模型以及实际情况,计算最合适的公式来求适应度值,这样可以平衡各个参数对结果的影响。 改进遗传操作:我研究了不同的选择、交叉和变异策略,通过对比实验,选择了更适合路径规划问题的遗传操作方式。例如,采用锦标赛选择法、部分映射交叉法等,以提高算法的搜索效率和多样性。 引入精英策略:在遗传算法中引入精英策略,即保留每一代中的最优个体直接进入下一代,以避免优秀基因的丢失,加速算法的收敛速度。 自适应参数:通过分析每代种群与每个个体的适应度值关系,针对每个个体计算自适应适应度值,如种群大小、交叉概率、变异概率等,以优化算法的运算效率,减少算法陷入局部最优解的可能。 准备心得 时间跨度长,实力不强的像我搞了俩月才搞好。要有耐心,要能坚持下去。 感受 熬出头了,接下来要做好继续熬鹰的准备!栗栗姐真的是太好了,无时无刻不在鼓励我,永远都提醒我进步,也完全希望着我能更好的方向发展。中途给我换换了好几个部门,给我都弄不好意思了姐姐还不厌其烦的帮助我,呜呜呜