热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面试经验整理

写在前头毕了这么久,弃研转计算机搞了也有个两三年了。技术栈也转成了后台。这次希望能在一个规模大点的公司好好深耕学习后台知识,之前都在小公司。天融信面经算

写在前头

毕了这么久,弃研转计算机搞了也有个两三年了。 技术栈也转成了后台。这次希望能在一个规模大点的公司好好深耕学习后台知识,之前都在小公司。

天融信面经

算是第一次面试。

技术leader面: python的垃圾回收机制:引用计数,循环引用,分代回收 uWSGI与uwsgi与wsgi的区别。答:两个是协议,一个是服务器
uwsgi用法,答:回答了一下可以通过ini文件来配置执行,同时可以配置systemd来作为后台服务
自己的web应用为什么要用nginx而不选择apache啥的。答:nginx轻量
为什么框架(flask)自带的服务器一般不能用在生产环境中。答:性能差,不稳定
回来查了下,其实应该从并发,静态,动态数据处理来进行回答,为啥用nginx + uwsgi之类的
@staticmethod和@classmethd有什么用以及区别以及为什么要这么用。答:可以不用实例化就能调用方法,以及支持调用的方式有不一样。为啥使用,确实之前没想过,然后面试官说和装饰器有关。这我还真没遇到过。
问了好多celery以及rabbitmq,这俩我在之前的CRUD编程生涯中,用的还着实少,感慨一下,只会使用的当真不能写到简历里啊,提都别提…
为嘛redis与mysql的一些细节不问呐…Orz,这个因为有业务需要,加上自己捣鼓,还算懂一些…

总监面: 主要考察了架构,上家公司的后台架构是如何的。
以及技术选型,redis和rmq作为中间件的应用场景之类的
nginx做负载均衡(中间件)与做反向代理(服务器)的差别
问了个问题:
两个机器mysql实例,拥有相同的数据库表,都在读写,(如何将两个mysql实例进行同步)
(同步mysql)
我的重点关注在两个具有同样的数据库表的读写mysql,怎么确保一致性,同一行数据在两个表中一个为100一个为50,以哪个为准之类的。后来想了想。反正提出的方案似乎人不满意。
最后请教了一下面试官有什么想法,面试官说让我去网上查…

最后还问了一些比较通用的话题:
遇到难题怎么解决的。相比起别人来说你的优点是什么。

总结一下:

面试官说我不能get到他的点,其实也有因为面试官问的问题自己不是很明白吧。
好好准备,心态放好,工作才刚刚开始找。

头条一面挂经

先出了一道算法题,数组里每一个数组代表最大步数,可以在最大步数内往前走,看最后能不能走到数组最后一位。 没想出来。。。
后来换了一道题,合并有序链表,也是一时没想出来。自己的实现是把链表转换为数组,合并数组并做了个快排,之后把排序之后的数组生成了链表…
转到项目上,问了问flask和tornado的主要区别。答:轻量的flask以及对socket的处理,上tornado可以做到同时处理较大的连接数。
问了问redis + 临时表的方式组织重复提交,然后出了个优化,能不能去掉临时表,想来想去没回答到面试官的点。面试官说可以采取后端token的方式,token传给前端,前端在提交请求的时候带上这个token,后台再根据token去比较,是不是重复提交了。其实我觉得这种方式,还是会有场景可能会出错的。
还问了啥忘了,倒是出了sql题目,考了索引,问了问什么情况下索引都能被直接用到。这个面试官说这部分答的不错。然后说差不多吧,结束了,基础还是差了点,数据库不错,说有机会(捂脸…)前后差不多一个多小时点把,算法那里就有20分钟了吧……
感慨一下,头条的场所真是高大上…保利广场。。。
最后,感觉自己工作了这两三年,换做了后台后,很多后台的东西都没有去深入去研究。
自己从地球科学转行到计算机,转了大方向,然后做了久后从云计算又转到了后台,又转了技术栈……
蛮打蛮算差不多一个一年的经验去应聘后台吧(……)一定要好好沉淀,深耕技术底层原理,后台也就那么几个技术,好好搞。

———————————————————————————————————————————————————— 分割线,可能头条没挂。因为头条挂了好像是会很快就有拒信,一个朋友就是第二天给的拒信。。。不懂啦
估计是资源池躺尸了……

悦然心动面试总结

一面是人事小姐姐,和我聊了一个小时。真心的,第一次遇见这么能聊的HR,可能也是因为遇到了能聊的我吧……
各种问,啥都问了。包括具体负责的模块都问了。
然后今天电话二面,和面试官聊了很多非技术的问题……
技术的话回想起来,一个是问mysql通常在Web架构里是怎样的一个构造。我以我们项目作为举例,mysql主从备份,读写分离。 介绍了一下为什么做这个,以及曾经解决过什么问题。
问mysql如果主从备份的效率不高的话,或者同步出了问题怎么解决。我没这方面的知识,就直接说了,先把读取切到主库,保证业务正确,再从运维角度去看主从备份是哪里出了问题。
问mysql如果遇到大体量的行的时候怎么解决。老实说,之前在项目里,最大的就是user信息表了,然后曾经有做过模糊匹配,但是效率很低,也调研过搜索,但是没机会做…就答了搜索吧,或者分库分表,或者全文索引。
问了我们在业务中遇到的秒杀问题。我提到了用redis做的分布式锁,然后接下来问了几个Redis的命令。不过确实没用过。老实说我们都是在写业务,对redis的调用也是用的封装包……惭愧。redis命令忘了,给面试官发了短信问那几个命令,如果面试官回了,我就今晚看看底层实现原理。
——————面试官没回我…… 这面应该是过了,然后说下次在公司面试。 比较喜欢这家公司的文化,好好准备撒~
三面技术面试:
在公司面试。刚开始让我从Python使用者的角度去谈python的一些特点。我谈到了语法,以及应用场景,谈到了开发效率较高,但执行效率较低,比较详尽的谈了一下Python GIL锁的问题,然后也解释了一下为什么Python的程序大多是多进程单线程模式。
然后让我讲了一下用python 做web,通常会是个什么架构,举了比较典型的,nginx + uwsgi + app app的例子,详细讲述了一下各个组件在其中的作用,app处理动态数据,uwsgi作为服务器,可以接收请求和环境信息帮助处理动态数据,app用作处理动态数据,静态的由nginx来做转发。
聊到了flask和tornado的一些差别,为什么有些框架自带的简单服务器是不能用来做生产开发的。最主要就是聊到了epoll,性能好,面试官问了那么多路复用技术除了epoll还有什么,以及同epoll的区别,这个倒是记得一些,就说出来了。
https是怎么做到保证安全性的。懵逼,只说了我只知道http + ssl层,需要配置CA证书,好像是别人拿不到你的证书内容就没办法怎么怎么blabla,然后说这个真的不知道。。。 https://juejin.im/post/5afe23756fb9a07ac90d7080 然后就是数据库方面,比较有印象的一些问题:

mysql

非聚集索引和聚集索引有什么区别,主要谈到了一个就是文件存储上的问题,比如是否和数据文件在一起。https://www.cnblogs.com/aspnethot/articles/1504082.html 剩下的就忘了。没答上来。
innodb和myisam有什么区别,主要谈了锁粒度支持的不同。顺着这个,问到了数据库事务,问了一些对事务的理解。出了一个题,如何确保在一个涉及到两行数据变化时,考虑到其中有可能出现写数据后宕机问题,就说了应该把两个操作放到同一个事务里来,利用事务的原子性,做一次提交。还可以通过额外的比如流水表的方式,来保证最终的一致性。
就顺势问了最终一致性和实时一致性的理解,我谈的是最终一致性可能会一定程度上影响用户体验,如果对实时一致性要求没那么高,可以通过最终一致性来进行修正。实时一致性的话,受困于死锁的概率性出现,其实还是会出现不同的。回来查了查,理论上来说,实时一致可以当做强一致性,而最终一致性可以当做弱一致性,但很难保证数据脏读的情况不出现。毕竟,死锁都是概率发生。
聊到了之前项目中的死锁问题的话以及数据库事务,问到了数据库事务的隔离级别,这个就不知道了,因为都是默认的,没改过。
暂时回忆想到这些……

Redis

Redis 的事务;伪事务,不具备原子性,前后命令不能是相干的,因为下一个命令不会因为上一个命令的执行结果而影响是否执行。
Redis的运行形式是什么:单进程单线程;redis是如何保证并发请求顺序执行的,我说Redis是会形成一个queue,来把所有的请求按顺序加入,保证串行执行。Reids能用上IO多路复用吗,会不会提高效率。这个我就先说不知道了。但是面试官会鼓励说出自己的想法,我就说,redis在内存里已经比磁盘I/O要快上很多很多倍了,现有的机制已经做到足够效率,如果用上多路复用的话,还得考虑你连接的顺序问题,这个就是需要额外的设计了。比较懵逼,还真没想过,不过不知道的东西我都是先说不知道,这个只是我的个人想法。这里补充一下,今天查阅了发现原来Redis也是使用IO多路复用技术来管理连接的……
redis单点的话,如果失效了怎么办。答:首先是业务不能和Redis强耦合,应该在设计上更多注重解耦性。其次redis失效的话很容易影响到Db,要在业务层做控制,不能直接和Db接触,或者通过别的方式,诸如消息队列,来控制同Db的连接数。以及最终还是要对redis的集群健康做保障的。

系统以及其他方面

如何保证一个系统的稳定性?答:支持冗余,横向扩展。包括负载均衡(DNS/nginx)。中间件都需要集群来保证健康。同时,数据库通常来说是系统的瓶颈,要做好足够的措施,不能让数据库down了。
对docker与微服务的看法,我谈了微服务是为了解耦,模块化,同时通常还搭配前后分离。docker容器的话,基于同一个内核态来进行虚拟化,启动很迅速,隔离性也还OK,并且支持回滚,用一些监控编排程序,对docker的服务可以做到很好的管理。提到了第一家公司里接触过一些docker。不过都忘了……
有没有学过其他语言?看过js,聊了下从前,刚提交了需求更新,看了一下js代码,为了方便在页面调试的时候,可以更准确一些,然后就被老板旁敲侧击任务怎么样了。程度是能在页面上简单的看懂一些js逻辑,但是语法糖什么的估计不太明白。
如何成为一个更好的工程师:我主要从我的比较乐意交流请教别人和沟通,以及工程师需要知道底层原理,而不是简单的会用来谈的,还要戒浮躁。
补充一下:分布式系统中的Session同步问题,这个没遇到过,答不出来。今晚学习一下

趣味题与算法

超出内存接受范围的很大的无序数组,怎么排序。
想了一下,应该分段取可以操作的数组,然后用冒泡,因为冒泡可以把最大的那个选出来并且移动到数组的右边,之后再取第二段数组,包括前一个冒泡出的最大的那个,然后继续迭代遍历下去。最后就能成了。
快排的思想:分片+递归。这个真的理解的透透的了。面试官人很好,特意强调不是让我手撕代码,只要说出思想就好了。我说这个我会,头条面试的时候我就手撕过它……

四面

技术面了一个多小时。HR面。技术面试官和HR反馈了面试结果,反馈的过程大概接近20分钟吧。
回来问我面试感觉,我的评分,我给自己评分3-4分吧,满分5分。因为确实有些东西真的一点了解都没有,比如https以及事务隔离级别,这些是欠缺的。HR还问了我面试官都问了啥问题啊。我讲了一些。最后HR说有没问题想问的,我一时也不知道问啥,因为之前人事一面的时候了解的已经不少了,技术方面也问过面试官了。就说一时没了吧现在,HR小姐姐人还很好的说,没关系,都加了微信,如果回去后这几天有想了解公司和团队的就通过微信问他们。
然后HR小姐姐走之前还问了一些上一家公司的问题,我就说了还是氛围,我真的比较喜欢技术一点的氛围吧。氛围太压抑,觉得工作的也不开心,年终奖也不要了。夸了我的水杯好可爱,我说女朋友买的啦。然后问我有没枸杞,我说没呢,我不掉头发。这把小姐姐逗乐了,我们就聊了下,我说这也还好啊,我一直以来的目标就是成为一个风趣的程序员嘛,也许可能是因为我不是科班出身嘛。小姐姐送我到了电梯后,我就肥去了……
重点,结果没出,一周内通知。我就知道,可能凉啦……

总结

面完悦然心动,感觉好累,面试真的蛮累人的。晚上和妹子一起吃了饭,也有几天没见面了。过几天她就回随州了,我还是得加把劲儿呀!
天融信,感觉很不好,其实根本就不想要我还让我去面试,要招个经验十足的还要招会爬虫的。回来一看人招聘改成了5-10年…说了celery和rmq都是使用,就捡着这俩问……
头条一面的话,觉得头条真的蛮重视基础,算法不说了,还有就是业务场景,以及通过出简单的sql题,来考验你对基础语句以及索引的优化应用。一个多小时,和面试官聊了也还好。面试官很儒雅。
悦然心动面试,完整四面。给人的感觉就是,不问可以搜到的面试题,更多的由你的简历以及你对上一个问题的回答,去深入的问,收获还是很大的,觉得面试官特别有礼貌。HR们的面试也很专业效率。

关于我自己

优势:
学习能力可以,有一定工作经验,理解能力真的挺不错的。从云计算转到后台,也没什么不适应,我第三天就开始写人家的业务了…沟通表达能力还是OK的,为人风趣幽默,比较积极。
劣势:
学历不行,211的沾一点点计算机边的专业;找的是后台开发,后台经验不足,不到一年。计算机几大块基础还是差点。
想法:
学习重在日常,知其然要知其所以然。不能满足于日常的CRUD编程,尤其是自己还是自学转行来的。

转:https://juejin.im/post/5c7dd263e51d450d4831f89d



推荐阅读
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 护墙_搭建LVS负载均衡NAT和DR模式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了搭建LVS负载均衡NAT和DR模式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 这也太简单了!轻松操作Feign 服务调用使用 Zipkin 链路追踪!
    0、介绍分布式微服务时代,方便了业务的快速增长和服务的稳定,但是系统出现问题后,面对同业务多服务排查起来令人头大。这时候领导就想着集成分布式追踪系统。Zipkin是T ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 消息中间件RabbitMQ 高级特性之消费端ACK与重回队列
    什么是消费端的ACK和重回队列?消费端的手工ACK和NACK消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿如果由于服务器宕机等严重问题 ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
  • celery 爬虫使用
    简介celery是一个基于分布式消息传输的异步任务队列,它专注于实时处理,同时也支持任务调度。它由三部分组成,消息中间件, ... [详细]
  • 源码包安装RabbitMQ3.6
    先安装erlang依赖,也是门编程语言,下载源码包地址:https:www.erlang.orgdownloads20.1首先先安装个依赖 ... [详细]
author-avatar
小布丁她Daddy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有