zoukankan      html  css  js  c++  java
  • 思考和总结(持续更新2021/3/1)

    总结面试遇到的问题和可能的面试问题 供自己复习

    golang面试题参考 https://www.cnblogs.com/wpgraceii/p/10528183.html

    腾讯golang面试题 https://blog.csdn.net/luolianxi/article/details/105606741

    c++

    现在不做c++就没更新了

    golang

    const 中的iota 每一行隐藏iota递增 初始可能为 1<<iota 1左移0位结果为1

    iota 参考 https://www.jianshu.com/p/08d6a4216e96 https://studygolang.com/articles/22468?fr=sidebar

    defer 和panic同时在时的执行顺序

    gc 方法 标记清除,三色法 部分细节

    channel

    slice和数组 slice 含三个部分 指向底层数组指针,len,cap ,容量不够会扩容,内存重新分配,内容重新拷贝,不再使用之前的底层数组。

    map的 底层原理 哈希表为底层原理 bucket 解决冲突方法为拉链法,解决hash冲突方法还有常用的开放定址法 细节略

    GMP相关的

    go手写代码

    基本算法不提,主要说可能让你用channel实现的东西

    生产者消费者模型 (多生产多消费,控制结束和开始)

    百度问到 一万个任务,开最多10个协程,每秒最大1000次,写下(假设任务就是普通的打印hello)

    手写 LRU (常考)

    双栈实现队列

    数据结构算法

    数据结构:链表 二叉树层序遍历需要队列

    链表 :链表反转类的 指定距离反转或者间隔k距离的反转,判断链表成环,倒数第k个数,删除倒数第k个

    排序:快排 归并 堆排 和相关的复杂度和稳定性

    (快排,堆排,归并一定分分钟撕出来,快排优化,重复数据过多,三路快排,还有第k大的数,前k个大的数用快排实现下)

    查找:二分 (旋转数组,第一个大于target的,大于等于target的,变化的题目要注意)

    贪心 回溯 (什么 N皇后,全排列,数独)

    动态规划 (跳台阶,背包问题)

    字符串 (单独说说,字符串问题真的多,回文,最长上升子序列,子串 建议去牛客刷透彻)

    快速幂

    字典树 二叉搜索树(熟练写下,不是很复杂)

    b树 b+树 红黑树 平衡树(不会手撕,知道原理即可)

    树相关 : 层序遍历树(可能递归或非递归),树的左右视图(dfs,bfs),镜像反转等等

    最大和(字节问到)

    操作系统

    信号量?

    进程和线程和协程的区别? 进程是资源分配的最小单位 (golang groutine切换保存什么信息,保存到哪里了,留下思考)

    进程间通信方法,线程间同步方法

    各有几种状态,状态转移图?

    虚拟内存?(重要细节很多,来源,优点,映射方式)

    分页分段机制

    内存分配和管理方式(重点,很多公司都问)

    数据库

    事务四大特性(ACID)? 原子性、一致性、隔离性、持久性

    什么是原子性?

    范式的了解?范式和反范式的优缺点?(被问到过,没回答上具体例子)

       第一范式:每一列都是不可分割的数据项

       第二范式:第一范式条件下,属性完全依赖于主键

       第三范式:二范式条件下,属性不传递依赖于其他非主属性

      所用的范式越高,对数据操作的性能越低,表太多,查询起来可能会慢,数据量太大时,连表查询太慢可以适当反范式,在其中一张表加入字段,用适当的冗余空间换取查询时间。

    B树和B+树区别

    sql 优化

    聚簇索引和非聚簇索引的区别

    Mysql nnodb的表,行,页锁相关

    Redis

    五种基本数据结构实现和使用

    Redis单线程为何能支撑高并发

    Redis i/o多路复用

    跳表 原理

    hash和rehash
    缓存雪崩 ,穿透

    计算机网络

    三次握手,四次挥手?必要性?

    tcp 拥塞控制算法 滑动窗口

    http和https的区别

    http和tcp区别

    tcp和udp区别

    工作遇到的问题

    golang gorm库中的first 会默认增加order by by_primary_key可能导致mysql选错索引,表数据量大可能查询很慢,使用limit代替first

    2020.10.14 今日面试被吊打,需要好好深入研究下,不能似懂非懂。

    sgcx
    2021/1/6 某公司(sgcx)一面

    golang GMP调度模型

    context 作用 :调用链,传递参数,控制groutine退出。

    GC 频率调高,调低有什么影响

    网络模型(ps:面试官说他们那个时候是四层和七层,我们都是五层和七层)

    三次握手,四次挥手

    客户端可以建立多少tcp连接,服务端可以建立多少tcp连接

      A:客户端和端口有关,服务器因为四元组理论上无限连接,连接耗费资源,所以跟服务器可承载的压力大小有关。

    数据库

    乐观锁,悲观锁实现

    事务的隔离级别

    b+树三层可以存多少数据

      网上有详解,当时没答出来,感觉也没怎么样。

    数据结构 前中序恢复二叉树的方法,太简单,没啥说的

    可能公司太小了,没什么技术。

    2021/1/11 二面

    当时没写后面忘的差不多了。用了23分钟的样子。

    好像又问了GMP模型。

    数据库索引又问了下。

    海量数据处理,5亿url,有重复,内存几十G,问怎么处理

      hash或者bitmap都可以解决。

    2021/1/14 三面

    小公司竟然有三面。问问实习做了什么,问我实际相关的东西。

    实习公司最有成就感的事情。

    waitgroup和channel用哪个? A:习惯用waitgroup,感觉没什么区别。

    优点缺点,我说喜欢追求技术细节,不了解原理感觉不能所欲的掌握它

    Q:具体一点呢,A:比如GMP模型的底层数据结构,channel使用的数据结构和阻塞唤醒的具体情况。

    2021/1/15 hr通知

    问实习时间和日期,给薪资让我考虑

    没听过的公司,反而过了感觉很慌,不会是骗子公司吧。应届生不能随便签三方。

    字节
    2021/1/7 字节一面

    c++好久没用了,后悔用c++写题目了

    数据库索引

    golang slice 扩容机制

    哈希表介绍

    手撕代码

    一个有重复元素数组,两个数的和为0的保存输出, 有印象但是忘了,用了set 投机取巧,

    后面问我三个和为0,不能重复读取,用了个O(n^2)的笨办法,leetcode有原题可能不太一样

    实习做了什么

    感觉凉凉

    xet
    2021/1/18 xet小公司二面

    一面忘了没记录

    二面感觉面试官拿着题库问的,还有所谓的正确答案,服了

    golang

      make和new的区别

      golang和其他语言的区别,协程的优点

      基本数据结构,演变(演变我是有点疑惑)后来问了下数组和切片区别

      channel 原理,从源码方面答了下

      最后说我go基础还不错

    操作系统

      进程创建分配什么资源

      线程拥有什么资源 我说 私有堆栈,寄存器和程序计数器,他还重复一遍答案补充个线程ID

       进程间通信,线程之间通信  (特意说了线程我少说了条件变量)
    

      线程锁有哪些,区别

       进程启动时会用cpu调度吗,   不会,线程启动才会  
    

      进程线程携程区别。

      

    mysql

      说我mysql了解不多 (疑惑脸)

      索引的原理 myisam索引和innoDB索引的区别

        乐观锁,悲观锁 (使用场景不同,乐观锁适用于读多写少,另一个相反)
    

      索引策略和优化方式(这么大范围的问题,我反而没啥说的了)

      表锁和行锁的实现,粒度,快慢,资源消耗,这个我说反了

      事务特点,尤其是一致性还说了标准答案(ps:绝对照题库念的),一个有效的状态到另外一个有效的状态,包含主键外键

      从工作开发上说说事务相关的使用(问题不清楚,然后自问自答了)事务不要太长

      默认隔离级别 说错了,答案是可重复读。

      log知道吗,我答binlog undolog redolog ,细说了下binlog,说让我下去多了解(自己不深入问,我自己说说不完的)

      

    网络

      tcp,udp区别

      tcp怎么实现可靠传输

      为什么三次握手不是二次

    linux

      命令用过哪些 答 top lsof df netstat

      问用过awk吗 ,没有

    git   

      回滚

      怎么实现共用一个分支,只把自己的修改提交上去

    让我了解了解 neginx docker k8s es,这个我倒是认同。慢中有快的了解吧。

    三面

      问我实习做了什么,学校最擅长的科目(我说操作系统)

      讲讲内存分配吧或者说你最了解的(答虚拟内存)

      说了说虚拟内存原因,优点,具体虚拟映射实际物理地址,磁盘内存互换,中断保存上下文等等

    过了,薪资不满意,拒了

    百度
    2021/1/26 百度一面

    进程线程协程区别,groutine切换保存什么具体信息,保存到哪里

    mysql 查询,分页太多如何查询,假设uid=100,offset非常大

        保存上次查询的位置,

    redis hash介绍,扩容方式,访问先访问新老哪个

    反转链表,输入输出

    10000次任务,假设打印字符串,最多10个线程,每秒最大1000次,怎么实现

    已凉

    xmpalyer

    2021/1/27

    某公司(mxplayer)二面

     一面顺便记录下 常规问题,算法,写快排,树的镜像,说时间空间复杂度

    二面

    范式反范式具体的例子

    接口保存数据到数据库,失败怎么处理(加入kafka队列重试)

    kafka接收消息,启几个进程,服务部署多少节点,

    服务重启或者其他方式,kafka如何继续从上次的地方消费(offset)

    两个链表合并,k个链表合并,复杂度(非要最优解,go不好手动实现优先队列,记得自己手动实现下,防止不让你用库的优先队列)

    二面感觉回答很不好,收到通过的通知,让我到现场终面(估计是kpi了,可以去看看)

    三面 现场终面(挖坑待填)

    字节
    2021/1/29 字节捞起一面

    go channel结合协程模型讲讲

    线程协程切换有什么区别

    你说到cpu定时抢占切换,线程和协程抢占切换的细节(线程cpu定时切换)

    如何实现的定时切换,假设一直for循环怎么切换(中断)

    中断是什么,怎么实现?

    虚拟内存,为什么需要,会访问到其他进程的空间吗

    虚拟和实际内存如何进行转换 (说到mmu,虚地址前面为页号,后段为偏移量)

      问具体页面的映射是怎么实现的

    内存分配相关,你说到进行碎片整理,如何进行,进行会对我们的程序有什么影响

    redis是什么,用来做什么,基本的结构,

    sortset 怎么实现排序 (跳表)

    为社么用跳表,原理是啥,如何插入数据的 (红黑树复杂,跳表相对简单)

    红黑树哪里会用到,特点是什么

    除了二叉树,多叉树哪里用到 (数据库b,b+树)

    b,b+树区别

    算法 二叉树最大路径和 (其他还好算法写的太慢了,哭)

    感觉还是不行,继续努力,年后面下opera

    2021/2/几号忘了 字节二面

    一面过了,

    二面 汉诺塔,编辑文字 两题 凉凉

    多刷算法准没错

    游戏科学 2021/3/1

    跟同学在成都玩,公园里接到游戏科学的电话

    c++问的比较多,但是没复习,可惜可惜

    c++ 多态的原理

    c++ static和全局变量的区别

    c++ 虚函数表

    c++ 为什么要虚析构函数

    cpu满负载如何排查 top找相应程序,打印堆栈信息

    go GMP模型

    redis 原理

    很多数据(内存放不下)取最大的前n个数 (堆排序)

    很多数据(内存放不下) 少量重复 (大概两个元素出现两次,其他元素只出现一次) 找出重复的

    异或,每次取元素和每个元素依次异或,结果为0则只出现一次,去除元素,为1则出现2次,是我们要找的元素。

    • 算法
      链表中点
      链表倒数第k个点

    操作系统
    linux下环境编程,shell脚本
    linux下网络编程

    数据库索引的原理
    如果所有字段建立索引会浪费什么资源 (我觉得是磁盘资源)

    查询资料发现 一个表索引字段过多会导致增加删除更新时,索引位置需要调整,速度很慢

  • 相关阅读:
    flask框架的使用
    git的基本使用
    pycharm连接数据库以及遇到的问题
    Git原理与Git命令大全
    git使用
    Redis 数据库
    ATM项目
    跨域问题及解决方案
    django的信号
    django的缓存机制
  • 原文地址:https://www.cnblogs.com/9527s/p/13184743.html
Copyright © 2011-2022 走看看