面试问题
自我介绍
你在项目中遇到的最大的挑战和难点是什么去解决的strong>
你刚接触一个项目的时候,你是如何去做的,具体做了些什么
http 协议如何保证可靠性
- http 协议建立在 TCP 协议之上
- TCP 协议通过连接管理、确认应答、超时重传、拥塞控制、流量控制等手段来保证传输的可靠性
讲讲 java 的语言特性
- 简单性:Java语言继承了C++语言的优点,去掉了C++中学习起来比较难的多继承、指针等概念,所以Java语言学习起来更简单,使用起来也更方便
- 面向对象:Java是一种面向对象的编程语言
- 分布性:Java设计成支持在 络上应用,它是分布式语言。所以只要用Java编写了一个程序,就可以到处应用
- 编译和解释性:Java编译程序生成字节码,而不是通常的机器码,这使得Java开发程序比用其他语言开发程序快很多
- 稳健性:Java刚开始被设计出来就是为了写高可靠和稳健的软件的。所以用Java写可靠的软件很容易。目前许多第三方交易系统、银行平台的前台和后台电子交易系统等都会用Java语言开发
- 安全性:Java的存储分配模型是它防御恶意代码的主要方法之一。所以很多大型企业级项目开发都会选择用Java开发
- 可移植性:Java并不依赖平台,用Java编写的程序可以运用到任何操作系统上
- 高性能:Java是一种先编译后解释的语言,所以它不如全编译性语言快。但Java设计者制作了“及时”编译程序,这样就可以实现全编译了
- 多线程:Java是多线程语言,它可以同时执行多个程序,能处理不同任务
- 动态性:Java语言设计成适应于变化的环境,它是一个动态的语言
介绍一下 B 树和 B+ 树
-
B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树
-
B和B+树的区别在于,B+树的非叶子结点只包含导航信息,不包含实际的值,所有的叶子结点和相连的节点使用链表相连,便于区间查找和遍历
-
B树和B+树广泛应用于文件存储系统以及数据库系统中
分布式了解吗,微服务有没有接触过
- 分布式一般来说就是将程序和数据通过 络分布在多台计算机上执行,起分散压力的作用
- 微服务一般指将应用程序构造为一组松散耦合的服务,对偶来说,就是分散能力.
- 有关分布式和微服务另请参见参考文献.
类加载和双亲委派
- 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象
- 问题:当Java虚拟机要加载一个类时,到底派出哪个类加载器去加载呢li>
- 首先当前线程的类加载器去加载线程中的第一个类(假设为类A)。
注:当前线程的类加载器可以通过Thread类的getContextClassLoader()获得,也可以通过setContextClassLoader()自己设置类加载器。 - 如果类A中引用了类B,Java虚拟机将使用加载类A的类加载器去加载类B。
- 还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类。
- 另请参见参考文献《jvm之java类加载机制和类加载器(ClassLoader)的详解》
银行家算法
- 在操作系统中,一般需要研究死锁的避免、检测和解除. 银行家算法是操作系统中避免死锁的著名算法. 在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程. 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待. 细节另请参见参考文献.
LRU
- 最近最少使用:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。
- 手撕 LRU 代码:https://leetcode-cn.com/problems/lru-cache-lcci/
函数后面加const的作用是什么
- 函数后加 const 指示这个函数不对成员变量进行修改,是一个只读函数.
map和set有什么区别,它们分别又是如何实现的
- map 中的元素是 K-V 对,关键字起到索引的作用,值则表示与索引相关联的数据;set 与之相对就是关键字的简单集合,set中每个元素只包含一个关键字
- set的迭代器是const的,不允许修改元素的值;map允许修改value,但不允许修改key
- map支持下标操作,set不支持下标操作
- 底层都通过红黑树实现,另请参见参考文献 [3]
STL由什么基本组成的
- 通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成
虚函数和纯虚函数的区别是什么strong>
- 虚函数和纯虚函数是 C++ 实现多态的基础;允许通过基类指针调用子类的这个函数
- 虚函数:在基类中定义为 virtual 且有函数体的方法,子类可以重写虚函数,也可以不重写 (看需求)
- 纯虚函数:在基类中定义为 virtual 且没有函数体的方法,子类必须实现纯虚函数.
对数据库的索引有了解么,加上索引后有什么好处
- 数据库索引一般有 B+ 树索引、哈希索引和顺序索引
- 良好的索引可以使数据库的查询变得高效,当然,同时也增加了插入、删除的开销,因为这些操作需要同时对索引进行操作
- 一般选择在主键上建立索引
你项目中是否接触过多线程编程,运用场景是什么前大数据环境下,多线程的优势
- 提高资源的利用效率
- 在某些情况下简化了编程
- 加快程序的响应速度
你对Web开发是否有了解,是否有接触相关的实际项目,你是怎么做的strong>
你对Mysql优化了解多少,你都采取过哪些优化方法
- 关于MySQL优化的方式太多了,这里没法做一一陈述,有需要的另请参见参考文献进行学习,这里列出几条
- 一般考虑在WHERE和ORDER BY命令上涉及的列建立索引
- 字符字段最好不要做主键
- 使用合理的字段属性长度,固定长度的表会更快。使用enum、char而不是varchar
- 避免select *,将需要查找的字段列出来
- 不用函数和触发器,在应用程序实现
- 尽量避免在WHERE子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描
你是如何实现数据从后端到前端展示的
- 这个问题的答案见仁见智,小到 前端PHP 调用一个存储过程,通过一定的逻辑渲染到 Web 页面上;大到现在非常流行的前后端分离,后端提供数据接口,前端拿到接口之后采用一定手段展示,最常见的就是 vue + spring 组合,有兴趣可以自行学习.
是否愿意接受加班
是否愿意接受工作城市的调剂
对自己投递的部门有什么了解
反问
参考文献
- TCP协议-如何保证传输可靠性 (https://www.cnblogs.com/taoxiaoxin/p/13836206.html)
- 【经典数据结构】B树与B+树的解释 (https://www.cnblogs.com/makai/p/10861296.html)
- AVL树和红黑树(map和set的底层实现)(https://blog.csdn.net/weixin_44826356/article/details/105750262)
- 虚函数和纯虚函数的区别 (https://blog.csdn.net/Hackbuteer1/article/details/7558868)
- 腾讯2017校招实习生面试总结 腾讯实习生面试经验 (已拿offer) (https://blog.csdn.net/doleria/article/details/71699154m_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs&dist_request_id=5b49d992-d7eb-4cab-a621-0128c353f89b&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs)
- 腾讯2016实习生面试经验(已经拿到offer) (https://blog.csdn.net/oNever_say_love/article/details/51223886m_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs&dist_request_id=f4d5a8d6-e14c-47f4-b852-16fe99a5d288&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs)
- 腾讯!阿里!大二男生斩获4家头部科技公司实习offer!完整经验总结!(https://blog.csdn.net/Datawhale/article/details/106935063)
- 最全 MySQL 优化方法,从此优化不再难 (https://zhuanlan.zhihu.com/p/59818056)
- jvm之java类加载机制和类加载器(ClassLoader)的详解 (https://blog.csdn.net/m0_38075425/article/details/81627349)
- 面试时怎样自我介绍比较好ttps://www.zhihu.com/question/20602526/answer/950289279)
- 程序员未来职业发展路线 (https://baijiahao.baidu.com/s=1602401857064691889&wfr=spider&for=pc)
附录:HR 面
- 讲讲自己每天的安排
- 看了哪本书对自己影响比较大,怎么体现li>
- 大概多久看完一本书li>
- 朋友或者外人对自己的评价li>
- 有哪些优势,不足li>
- 本科保研大概排名多少li>
- 之前实习怎么处理优先级li>
- 为什么想来我司li>
- 父母对工作地点的看法li>
- 有没有女朋友li>
- 对加班的看法li>
- 最有成就感的一件事,最受挫败的一件事li>
- 有没有投递竞争对手公司的实习生招聘li>
- 有没有意向的事业群以及额外要补充的条件li>
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!