中厂,面试就问了4道题,凉了!

这篇具有很好参考价值的文章主要介绍了中厂,面试就问了4道题,凉了!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

你好,我是田哥

所谓的金三银四,已变成铜三铁四了。很多人基本上莫有面试机会,更可惜的是机会有了,却没有把握住。

加入我知识星球:免费做简历优化、简历包装、模拟面试...

今天早上,一个朋友和我说面试中被问了下面四道题目,最后一道是真的搞不定。

条件:五年工作,普通本科,基本在外包

面一家中厂,期望薪资24K

面试结果:就问了四个题,前面三个题回答的马马虎虎,最后一道完全不知如何下手,凉了!

1:MySQL性能优化方法有哪些?

MySQL性能优化方法包括以下几个方面:

1. 优化SQL语句:

SQL语句是MySQL性能优化的重要方面。优化SQL语句可以提高查询效率和减少资源消耗。有以下几个方法:避免使用SELECT *,避免使用子查询,使用索引,使用JOIN代替子查询等。

2. 配置MySQL服务器参数:

MySQL服务器参数的设置直接影响MySQL的性能,包括缓存大小、连接数、线程池大小等。根据实际应用场景,合理配置MySQL服务器参数可以提高MySQL的性能。

3. 数据库表结构优化:

数据库表结构设计的好坏直接影响MySQL的性能。应该尽量避免使用大量的NULL值、重复的列、过多的索引等。

4. 数据库表分区:

将大的数据库表分区可以提高MySQL的性能。分区可以减少数据检索时的扫描范围,从而提高查询效率。

5. 使用缓存技术:

使用缓存技术可以减少数据库访问次数,提高MySQL的性能。常见的缓存技术包括Memcached和Redis。

6. 数据库读写分离:

将读写操作分离可以提高MySQL的性能。读操作可以分配到从服务器,写操作可以分配到主服务器。这样可以提高MySQL的并发性能。

7. 使用分布式数据库:

使用分布式数据库可以提高MySQL的性能。分布式数据库将数据分配到多个节点,可以提高MySQL的并发性能和可扩展性。

总之,对于MySQL的优化来说,需要根据具体情况进行优化,从SQL语句优化、服务器参数配置、数据库表结构优化等多个方面入手,才能提高MySQL的性能。

2:分布式事务实现方案有哪些?

常见的分布式事务实现方案有以下几种:

1. 两阶段提交(Two-Phase Commit,2PC)

两阶段提交是最常用的分布式事务实现方案之一,主要思想是将事务分为两个阶段,第一阶段是准备阶段,第二阶段是提交阶段。在准备阶段,所有参与者向协调者发送事务准备请求,协调者收到请求后向所有参与者发送准备请求,如果所有参与者都准备就绪,则进入提交阶段,否则回滚事务。

优点:实现简单,可靠性高。

缺点:存在单点故障,性能较差,容易出现阻塞。

2. 三阶段提交(Three-Phase Commit,3PC)

三阶段提交是对两阶段提交的改进,主要思想是在两阶段提交的基础上增加一个超时机制。在准备阶段,如果协调者接收到参与者的准备请求后一段时间内没有收到提交请求,则会向参与者发送中止请求,参与者接收到中止请求后回滚事务。

优点:解决了两阶段提交的阻塞问题,容错性更好。

缺点:实现复杂,性能较差。

3. 补偿事务(Compensating Transaction)

补偿事务是一种基于业务逻辑的分布式事务实现方案,主要思想是在每个参与者上定义一个补偿事务,当事务出现异常时,执行相应的补偿事务以保证数据的一致性。

优点:实现简单,可靠性高。

缺点:需要对业务逻辑进行深入分析,复杂度较高。

4. 基于消息的最终一致性(Message-Based Eventual Consistency)

基于消息的最终一致性是一种异步的分布式事务实现方案,主要思想是在每个参与者上定义一个消息队列,将事务操作转化为消息发送到队列中,通过消息的异步通信实现最终一致性。

优点:实现简单,性能高。

缺点:对消息队列的可靠性和性能要求较高。

5. Paxos算法

Paxos算法是一种基于消息传递的一致性算法,用于解决分布式系统中的一致性问题。Paxos算法可以用来实现分布式事务,其主要思想是通过选举一个领导者来协调事务的执行。

优点:实现简单,容错性高。

缺点:性能较差,需要多次消息传递。

3:JVM性能调优手段有哪些?

1. 内存调优:

JVM的内存管理是非常重要的一方面,可以通过调整JVM的内存参数来优化JVM的性能,如-Xms(初始堆大小)、-Xmx(最大堆大小)、-Xmn(年轻代大小)、-XX:PermSize(永久代大小)等。

2. 垃圾回收调优:

JVM的垃圾回收机制是JVM性能调优的一个重要方面。可以通过调整垃圾回收器的类型、参数以及对不同的对象采用不同的垃圾回收策略等方式来优化JVM的垃圾回收性能。

3. 线程调优:

线程是JVM的重要组成部分,可以通过调整线程的数量、优先级、调度策略等方式来优化JVM的性能。

4. 类加载调优:

类加载是JVM的一个重要部分,可以通过调整类加载器的缓存策略、使用预编译技术、优化类的加载顺序等方式来优化JVM的性能。

5. JIT调优:

JIT(即时编译器)是JVM的重要组成部分,可以通过调整JIT的优化级别、选择适合的编译器等方式来优化JVM的性能。

6. I/O调优:

I/O操作是JVM常用的操作之一,可以通过调整I/O缓存、选择合适的I/O方式等方式来优化JVM的性能。

7. 数据库连接池调优:

JVM通常会涉及到数据库连接,可以通过调整数据库连接池的大小、连接超时等方式来优化JVM的性能。

8. 网络调优:

JVM在网络通信方面也非常重要,可以通过调整网络缓存、调整网络传输方式等方式来优化JVM的性能。

4:什么是LRU算法?用java写一个LRU算法

RU算法是一种缓存淘汰策略,Least Recently Used的缩写,即最近最少使用。

实现思路:

  1. 创建一个双向链表,用于存储数据。

  2. 创建一个hashmap,用于存储数据的key和对应的节点。

  3. 当数据被访问时,如果在hashmap中存在对应的节点,则将该节点移动到链表头部。

  4. 当链表满时,删除链表尾部的节点。

Java代码实现:

/**
 * @author tianwc 公众号:java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年04月23日 14:14
 * 博客地址:<a href="http://woaijava.cc/">博客地址</a>
 *
 */
public class LRUCache<K, V> {

    private int capacity; // 缓存容量
    private Map<K, Node<K, V>> map; // 缓存存储结构
    private Node<K, V> head; // 链表头部
    private Node<K, V> tail; // 链表尾部

    public LRUCache(int capacity) {
        this.capacity = capacity;
        map = new HashMap<>(capacity);
        head = new Node<>(null, null);
        tail = new Node<>(null, null);
        head.next = tail;
        tail.prev = head;
    }

    public V get(K key) {
        Node<K, V> node = map.get(key);
        if (node == null) {
            return null;
        }
        // 将访问的节点移动到链表头部
        remove(node);
        addFirst(node);
        return node.value;
    }

    public void put(K key, V value) {
        Node<K, V> node = map.get(key);
        if (node != null) {
            // 更新节点值,并移动到链表头部
            node.value = value;
            remove(node);
            addFirst(node);
        } else {
            node = new Node<>(key, value);
            map.put(key, node);
            // 添加到链表头部
            addFirst(node);
            // 如果容量已满,删除链表尾部节点
            if (map.size() > capacity) {
                map.remove(tail.prev.key);
                remove(tail.prev);
            }
        }
    }

    private void addFirst(Node<K, V> node) {
        node.next = head.next;
        node.prev = head;
        head.next.prev = node;
        head.next = node;
    }

    private void remove(Node<K, V> node) {
        node.prev.next = node.next;
        node.next.prev = node.prev;
    }

    private static class Node<K, V> {
        K key;
        V value;
        Node<K, V> prev;
        Node<K, V> next;

        Node(K key, V value) {
            this.key = key;
            this.value = value;
        }
    }
}

使用示例:

LRUCache<Integer, String> cache = new LRUCache<>(3);
cache.put(1, "one");
cache.put(2, "two");
cache.put(3, "three");
cache.put(4, "four");
System.out.println(cache.get(1)); // 输出null
System.out.println(cache.get(2)); // 输出"two"
cache.put(5, "five");
System.out.println(cache.get(3)); // 输出null
System.out.println(cache.get(4)); // 输出null
System.out.println(cache.get(5)); // 输出"five"

输出结果:

null
two
null
null
five

每个面试官都有自己的面试套路,有的人一上来从基础开始,有的人却是从项目开始,还有的人是从你自我介绍内容开始,....

文中的这位朋友是从自我介绍中开始的,因为自我介绍中提到自己有性能调优经验,于是面试官一开始就问性能优化方面,看到她这些题的回答的不怎么样,于是也猜到就是为了吹牛逼而搞上去的“性能调优经验”。

再次,提醒大家,不管是简历内容,还是自我介绍内容,都要慎重,千万别把自己不会写上去,千万别把不会的吹牛逼说自己会,否则,你将会浪费一次面试机会。

好了,今天就分享这么多,我们下期再见,记得点赞收藏

题外话:如果有需要简历修改、简历优化、简历包装、面试辅导、模拟面试、技术辅导、技术支持等,欢迎加我微(tj20120622)。

我的个人技术博客:http://woaijava.cc/

回复77 ,获取《面试小抄2.0版》

回复电子书,获取后端必读的200本电子书籍。

推荐文章

手把手教你写简历,包装、优化!

面试不问java,问MySQL,如何破局?

MySQL 开发规范,非常详细,建议收藏!

手把手教:如何准备面试!

用Spring Boot搞了个医院项目,附源码!

应届生,实力已超6年,太卷了!文章来源地址https://www.toymoban.com/news/detail-425489.html

到了这里,关于中厂,面试就问了4道题,凉了!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 4年测试经验面试要20K,简单问了一下,连基础都不会,我也是醉了····

    现在招个合适的人可真难呀,不是这不会就是那不会,没有一个让我满意的··· 公司前段时间缺人,面试了不少的测试,结果居然没有一个符合要求的。一开始瞄准的就是中级测试工程师的水准,也没指望来技术大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失

    2024年02月08日
    浏览(53)
  • 喧嚣之后,元宇宙“凉了”?

    谁也没想到,当我们正沉浸在春节的喜悦中时,更名为Meta的Facebook正迎来“至暗时刻”。2月3日,Meta发布了截至12月31日的2021财年第四季度及全年未经审计财报。财报显示,旗下Facebook每日活跃用户首次连续下跌,还有备受人们关注的元宇宙部门Reality Labs亏损达100亿美元。紧接

    2024年02月11日
    浏览(29)
  • 金三银四没把握住,凉了...

    大家好,前两天跟朋友感慨,今年的铜三铁四、裁员、疫情导致好多人都没拿到offer!现在互联网大厂终于迎来了应届生集中求职季。 对于想跳槽的软件测试人来说,绝对是个找工作的好时机。这时候,很多高薪技术岗、管理岗的缺口和市场需求就出来了。 所以在这段时间想

    2023年04月15日
    浏览(25)
  • MySQL教程(适用于所有版本,非常详细,不懂就问)

    对于第一次安装mysql是有点难度,现在我会把安装流程搞出来。 MySQL Installer 8.0.33安装(不想安装这个版本,在点进去可以改):直达通道 点击离线安装进入教程下一步 点击继续进入下一步 网页安装被限速了,建议下迅雷,迅雷贼快,只有复制安装地址打开迅雷就会自动跳出

    2024年02月11日
    浏览(36)
  • Python过气,Hadoop凉了?零基础项目实战诠释何为经典

    👉导读 工欲善其事,必先利其器。Python 作为一种跨平台的编程语言,具有解释性、变异性、交互性和面向对象的特点,可应用于独立的项目开发。今天,我们特邀了公众号“冰河技术”作者、腾讯云 TVP 冰河老师,他将为我们带来基于 Python+Hadoop 手把手教学如何实现单词统

    2024年02月02日
    浏览(31)
  • 【AI探索】我问了ChatGPT几个终极问题

    终于尝试了一把ChatGPT的强大之处,问了一下关心的几个问题: chatGPT现在在思考吗?有没有什么你感兴趣的问题? 你认为AI会对人类产生哪些方面的影响? 你对人类所涉及到的学科有了解吗?你认为在哪些方面与人类是相当或者超过人类的了? 你有哪些好奇的地方吗?你是

    2024年02月02日
    浏览(29)
  • 阿里云版GPT官宣,我们问了它10个问题

    4月7日, 阿里云宣布自研大模型“通义千问”,目前已开始邀请用户测试体验。 阿里达摩院在NLP自然语言处理等前沿科研领域早已布局多年,并于2019年启动大模型研发,通义千问便是其最新成果,相当于阿里云版的“ChatGPT”。 有幸拿到了内测名额,问了通义千问一些问题,

    2023年04月10日
    浏览(26)
  • 字节跳动五面都过了,结果被刷了,问了hr原因竟说是...

    说在前面,面试时最好不要虚报工资。本来字节跳动是很想去的,几轮面试也通过了,最后没offer,自己只想到几个原因:1、虚报工资,比实际高30%;2、有更好的人选,这个可能性不大,我看还在招聘。我是面试Android开发的,3年经验,下面是面试流程: 1.插件化。启动act

    2023年04月11日
    浏览(30)
  • 用文心一言把欧小鹏里常问的问题问了一遍

    个人主页 | OpenI注册地址 | Github主页 欧小鹏, 针对LLM的社群机器人. 行外人觉得特简单, 一般化; 行内人觉得有特殊价值, 还可以. 要不要给欧小鹏换个头像: 这是换, 还是不换啊? 昨天, 对于曾经在百度开源社区有着 不深刻 的\\\"从业经验\\\"以及对国产LLM抱有十分期待和十二分关注

    2024年02月09日
    浏览(32)
  • 再见conda,你好Mamba

    如果你平日使用conda下载Python package、构建环境,明明设置了国内源,依旧很慢,很慢,很慢, 是不是很抓狂,有过类似经历,文末点个赞或在看。本期介绍一个 高效Python包管理器Mamba : 使用 多线程下载 repository data和packages; Mamba使用 libsolv加速解决依赖关系  (减少上面图

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包