diff --git a/.vitepress/cache/deps/@theme_index.js b/.vitepress/cache/deps/@theme_index.js index a5ca87a..df42952 100644 --- a/.vitepress/cache/deps/@theme_index.js +++ b/.vitepress/cache/deps/@theme_index.js @@ -6,36 +6,36 @@ import { } from "./chunk-CQOUZRMK.js"; // node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/index.js -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/fonts.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/fonts.css"; // node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/without-fonts.js -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/vars.css"; -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/base.css"; -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/icons.css"; -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/utils.css"; -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css"; -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css"; -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css"; -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css"; -import "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css"; -import VPBadge from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue"; -import Layout from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/Layout.vue"; -import { default as default2 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue"; -import { default as default3 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPImage.vue"; -import { default as default4 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPButton.vue"; -import { default as default5 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeContent.vue"; -import { default as default6 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue"; -import { default as default7 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue"; -import { default as default8 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue"; -import { default as default9 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPLink.vue"; -import { default as default10 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue"; -import { default as default11 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSocialLink.vue"; -import { default as default12 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSocialLinks.vue"; -import { default as default13 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSponsors.vue"; -import { default as default14 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue"; -import { default as default15 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue"; -import { default as default16 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue"; -import { default as default17 } from "/Users/annacheng/Documents/github/manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/vars.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/base.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/icons.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/utils.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css"; +import "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css"; +import VPBadge from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue"; +import Layout from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/Layout.vue"; +import { default as default2 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue"; +import { default as default3 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPImage.vue"; +import { default as default4 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPButton.vue"; +import { default as default5 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeContent.vue"; +import { default as default6 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue"; +import { default as default7 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue"; +import { default as default8 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue"; +import { default as default9 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPLink.vue"; +import { default as default10 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue"; +import { default as default11 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSocialLink.vue"; +import { default as default12 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSocialLinks.vue"; +import { default as default13 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPSponsors.vue"; +import { default as default14 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue"; +import { default as default15 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue"; +import { default as default16 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue"; +import { default as default17 } from "/Users/chengkai48/Documents/github/fduer-manual/node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue"; // node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/composables/sidebar.js import { useMediaQuery } from "@vueuse/core"; diff --git a/.vitepress/cache/deps/_metadata.json b/.vitepress/cache/deps/_metadata.json index 9ccaa8e..b2e5151 100644 --- a/.vitepress/cache/deps/_metadata.json +++ b/.vitepress/cache/deps/_metadata.json @@ -1,31 +1,31 @@ { - "hash": "994cab64", - "configHash": "89c6ec88", + "hash": "73ffb22c", + "configHash": "1c304b58", "lockfileHash": "9cc588bd", - "browserHash": "a431988b", + "browserHash": "cac48e0c", "optimized": { "vue": { "src": "../../../node_modules/.pnpm/vue@3.5.13/node_modules/vue/dist/vue.runtime.esm-bundler.js", "file": "vue.js", - "fileHash": "6cd27854", + "fileHash": "55be8712", "needsInterop": false }, "vitepress > @vue/devtools-api": { "src": "../../../node_modules/.pnpm/@vue+devtools-api@7.6.8/node_modules/@vue/devtools-api/dist/index.js", "file": "vitepress___@vue_devtools-api.js", - "fileHash": "625611ee", + "fileHash": "58c4f5ca", "needsInterop": false }, "vitepress > @vueuse/core": { "src": "../../../node_modules/.pnpm/@vueuse+core@11.3.0_vue@3.5.13/node_modules/@vueuse/core/index.mjs", "file": "vitepress___@vueuse_core.js", - "fileHash": "1af5fc3a", + "fileHash": "f5e2e4a9", "needsInterop": false }, "@theme/index": { "src": "../../../node_modules/.pnpm/vitepress@1.5.0_@algolia+client-search@5.18.0_postcss@8.4.49_search-insights@2.17.3/node_modules/vitepress/dist/client/theme-default/index.js", "file": "@theme_index.js", - "fileHash": "4416c23e", + "fileHash": "576effcb", "needsInterop": false } }, diff --git a/.vitepress/cache/deps/package-lock.json b/.vitepress/cache/deps/package-lock.json deleted file mode 100644 index 76d23f5..0000000 --- a/.vitepress/cache/deps/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "deps", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 3e90089..7a1eed0 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -9,47 +9,55 @@ const nav: ThemeConfig['nav'] = [ }, { text: "校招经验", - link: "/experience/internet", + items: [ + { + text: "互联网", link: "/experience/internet", + }, + { + text: "泛体制", link: "/experience/system", + }, + { + text: "其他行业", link: "/experience/other-industries", + }, + { + text: "杂谈", link: "/experience/others", + }, + ] + }, { text: "择业指南", link: "/choose-career" }, { text: "校友访谈", link: "/record" }, ]; const sidebar: ThemeConfig['sidebar'] = { - "/experience/": [ + "/experience/internet": [ { - text: "互联网", + text: "后端", items: [ { - text: 'java后端', link: "/experience/internet", - } - ] - }, - { - text: "泛体制", - items: [ + text: '写在前面', link: "/experience/internet/backend/index", + }, { - text: '金融行业', link: "/experience/system", - } - ] - - }, - { - text: "其他行业", - items: [ + text: 'java', link: "/experience/internet/backend/java", + }, { - text: '其他行业', link: "/experience/other-industries", + text: 'cpp', link: "/experience/internet/backend/cpp", } ] }, { - text: "其他经验", + text: "前端", items: [ { - text: '其他经验', link: "/experience/others", + text: '写在前面', link: "/experience/internet/frontend/index", + }, + { + text: 'JavaScript', link: "/experience/internet/frontend/js", + }, + { + text: 'TypeScript', link: "/experience/internet/frontend/ts", } ] - }, ], }; @@ -57,7 +65,7 @@ const sidebar: ThemeConfig['sidebar'] = { // https://vitepress.dev/reference/site-config export default defineConfigWithTheme({ extends: baseConfig, - title: "A Awesome Site", + title: "一个很有知识的网站", srcDir: "./src", description: "A site of manual for fduers", themeConfig: { diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..cc29df3 Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/experience/index.md b/src/experience/index.md new file mode 100644 index 0000000..231a4de --- /dev/null +++ b/src/experience/index.md @@ -0,0 +1,5 @@ +# 校招经验 + +这一章节旨在分享编者们的校招经验。内容将按行业分类,由不同领域的校招经验分享文章构成,希望为读者提供一个较全面的求职经验参考。 + +如果您有计算机类专业相关的校招经验愿意分享,并愿意为本章节撰写经验文章,请通过邮箱 **<21210240339@m.fudan.edu.cn>** 或公众号“破蛋计划Beta”与我们联系。此外,如果您在社交媒体上发布过相关内容,并愿意将其转载到我们的手册中,我们也非常欢迎您联系。我们会在筛选后整理到手册上,同时会注明原作者及原文链接。非常感谢您的支持! diff --git a/src/experience/internet.md b/src/experience/internet.md deleted file mode 100644 index 39a3db5..0000000 --- a/src/experience/internet.md +++ /dev/null @@ -1,404 +0,0 @@ -# 校招经验 - -这一章节旨在分享编者们的校招经验。内容将按行业分类,由不同领域的校招经验分享文章构成,希望为读者提供一个较全面的求职经验参考。 - -如果您有计算机类专业相关的校招经验愿意分享,并愿意为本章节撰写经验文章,请通过邮箱 **<21210240339@m.fudan.edu.cn>** 或公众号“破蛋计划Beta”与我们联系。此外,如果您在社交媒体上发布过相关内容,并愿意将其转载到我们的手册中,我们也非常欢迎您联系。我们会在筛选后整理到手册上,同时会注明原作者及原文链接。非常感谢您的支持! - -## 互联网 - -### JAVA后台开发 - -这篇的作者本人是2024届复旦计算机硕士毕业生,从事的是JAVA后端开发方向。去年拿到了腾讯、蚂蚁、快手、字节、美团、京东、得物、小红书的Offer(滴滴、百度、淘天因为投递的有点晚,要么错过笔试,要么后面不想再面了),腾讯、蚂蚁和快手是SSP,其他的也基本全是SP。 -具体可以参考这位学长的牛客网,还有许多的面经可以参考: - -由于我在九月份的时候想试试国企管培生,所以实际上互联网秋招也就从八月下到九月下就结束了,并且不少时间花在了国企的行测上准备,事实上准备互联网的时间不是很充足。之所以能够拿到这么多offer,运气好是一方面,另一方面也是之前在面暑期实习的时候准备得比较充分。个人认为最需要准备的有三个方面:八股文+项目+算法。JAVA岗位的hc很多,但相应的竞争的人也是非常多,近年来面试的难度也是在不断提升,所以一定要做好充足的准备。 - -目前八股文有关Java的部分比较建议是在JavaGuide上进行学习,关于计算机基础的部分很推荐小林coding上学习,写得很详细。 - -#### Java基础 - -重点复习Java的核心概念,如面向对象编程、集合框架、多线程、IO流等,需要确保对这些知识点有扎实的理解。最好能够结合源码来进行学习,比如HashMap的put方法具体实现流程?具体来说可以包含以下几个方面:Java语言基础、集合框架、并发编程、IO、JVM调优、JDK关键版本间的差别等。学习Java基础的时候,最好能够结合一些真实的代码来辅助理解,单纯看原理的话不太能够理解而且不便于记忆。 - -#### 数据库 - -数据库其实问的内容是比较常见的,但是可能会问的比较深,所以在学习的时候需要深入学习,然后重点学习常考的内容。具体来说主要包含以下几个方面:存储引擎、索引、undo/redo/bin log的作用、事务、锁和优化方法。其中事务是问的最多的部分,比如事务的隔离级别,以及如何实现的,这块儿很可能会问到底层的实现原理。具体来说,针对这些原理,不需要实际去实践,尝试结合现象进行理解就好了。此外,数据库相关的可能会提到sql代码题,这个时候就需要适当的刷一刷相关的算法题。 - -#### 计算机基础 - -计算机基础相关知识点主要是问计算机网络+操作系统,其中计算机网络问的更多,因为是与业务开发密切相关的知识点。具体来说主要包含以下几个方面:网络模型、常见的网络协议、网络安全以及网络设备。其中常见的网络协议问的最多,而这其中又是以HTTP、TCP和IP问的最多。此外,也还会常问在网页上输入网站地址后到页面加载出来经历了哪些流程,这些流程又涉及了哪些协议,在这个流程中协议的作用是什么?操作系统虽然并不是很常问,但是一旦问到就会是那种比较不太常见的那种,很容易完全没印象。所以在学习操作系统相关八股文的时候,需要最好是多看几遍,并且看的范围要广一些。具体来说主要包含以下几个方面:进程和线程、内存管理、文件系统、I/O系统以及Shell相关的场景命令。这些一般来说不是很好记,所以最好是多多复习,然后多看看面经,学习面经中问到的问题要怎么回答,多多积累就好。 - -#### 中间件 - -中间件近年来问的越来越详细,问的也越来越深入。根据功能将中间件分为消息中间件、应用服务器中间件和数据库中间件等不同种类。一般主要需要学习消息队列中间件:如RabbitMQ、Apache Kafka,用于实现异步通信和解耦。反向代理中间件:如Nginx,用于负载均衡和反向代理。缓存中间件:如Redis,用于缓存数据,提高系统性能。RPC中间件: 如Dubbo、gRPC,用于实现远程过程调用。这其中缓存中间件考察的比较多,尤其是以Redis为代表,需要重点复习。此外,需要知道同类型中间件的不同优劣势,进行横向对比,以便在后续可能会问到的场景题中进行合理选型。 - -#### 框架 - -这里的框架指的是Spring和SpringBoot,尤其是Spring问的比较多。Spring主要会问的模块包括:控制反转(IoC)和依赖注入(DI),通过容器管理对象之间的依赖关系。切面编程(AOP):实现横切关注点的模块化。数据访问支持:提供了对JDBC、ORM框架(如Hibernate)、NoSQL数据库的支持。事务管理:提供声明式事务管理的支持。MVC框架:提供了基于MVC的Web应用程序开发支持。SpringBoot问的一般主要是相较于Spring的优化提升,以及这两者间的区别。 - -#### 场景题 - -这里的场景题主要是指的高可用以及高并发的相关场景设计,是比较综合的题目,主要设计一些中间件和架构思考,准备这类题目需要多多积累相关场景题。而且 这类场景题多数是与分布式相关的,包括分布式场景设计原则、分布式数据存储、分布式事务处理以及服务治理与负载均衡等方面都需要考虑到。 - -### C++基架 - -本篇内容整理自蒋雨宸学长的经验分享,已获得原作者授权,蒋学长是2024届南京大学计算机硕士毕业生,以下是他的微信号和知乎链接。 - -**微信号:**LIMBO\_42 - -**知乎主页:**[https://www.zhihu.com/people/luo-chen-96-77](https://www.zhihu.com/people/luo-chen-96-77) - -#### 前言 - -我的BG是985科班本硕,求职方向为基架,实习经历是在阿里云某核心部门(这为我加了不少分)。主力编程语言是C++,曾参与过一些国外的知名课程,比如CMU的15445和MIT的6.824,6.S081,以及TIDB的TinySQL项目。代码题上,我在LeetCode上刷过了1000道题,不过学习成绩中等,没有什么奖项,也没怎么参与过学生活动(在国企求职时这算是个不小的减分项)。 - -最终,我拿到了几个不错的offer,包括钉钉、阿里云、蚂蚁、百度、快手和TP-LINK,基本都是SSP级别的,快手还特批了一个待遇,比快star略低一档。 - -整个秋招从七月持续到十一月末,终于尘埃落定。在这段时间里,我经历了多个阶段,经常在内耗和纠结中徘徊,最终选择了自己实习过的阿里云。我想给自己做个总结,回顾秋招的各个阶段,以及我在做出每项选择时的思考逻辑,希望能对后来的学弟学妹们有所帮助。 - -#### 前期准备 - -在准备方面我认为的重要性排序是:技术方向>实习$\approx$ 学历 $\approx$ 顶会论文>项目 - -**方向:** -开发无脑推荐后端。基架选择建议仅限于两种情况:一是实验室专注于OS、DB、网络等领域,拥有深厚的积累和强大的师兄网络;二是对底层技术有极高的兴趣。测开和前端适合背景稍弱但希望进入大厂的同学。关于算法,尽管我不是专家,但注意到今年算法与开发之间的差距增大,建议抓紧时间进入大模型领域,即使没有论文也不是问题,关键是方向对口的实习经验。一定要关注职业方向的广度,这有助于跳槽或应对裁员时更容易找到工作。我后续可能会详细讨论这个话题。 - -**语言:** -后端推荐使用Java,是绝大多数人的万金油选择。C++需要和具体的方向结合,比如OS,DB,网络,图形学,音视频,我比较推荐网络,因为进可游戏服务端,退可去各家基架部门。 - -**实习:** -目前来看秋招方向强相关,各家面试都希望你至少有一些相关的经验,所以如果有实习的机会,一定要去,实习推荐去强背书的地方,核心部门,实习就是一段经历,背书比较重要,转正没那么重要(压价 or 压根就不能转正 or 秋招拖得很久),不建议 all in 转正,谈薪环节需要其他家的 offer。 - -**学历:** -目前各家大厂都有卡本科学历和科班的情况,其中有一些很严重(非硕士非23所要走特批) - -**论文:** -除非是顶级会议的论文,否则大部分不被重视。因此,在确保满足毕业要求的前提下,应为求职多做准备。 - -**项目:** -项目我虽然列在最后一项,但其实说白了方向,实习,论文,都是项目,所以说要通过面试,项目的重要性一点不差。请选择有亮点的项目写到简历上,并且列出具体使用的技术,如何写一份好的简历也很重要,需要学会包装自己,引导面试官向你准备好的问题上引. - -#### 秋招过程 - -**提前准备,早投秋招** - -现在各家公司的秋招都很早就开始了。面对需要在实习期间同时准备秋招的情况,一些同学选择在实习结束后再开始投递简历,认为早投只是为了排序。但实际上,如果等到实习结束再投,核心部门的候选人名单可能已经满员,错过了最佳投递时机。例如,我在腾讯因为错误填写了毕业时间,错过了优先投递的时间,结果只能选择剩余的部门。 - -**实习转正后不要停** - -实习拿到 offer 之后也要多面,有直通终面的可能:即使实习拿到满意的offer,也得多面,好处有两个:一是留的面评越好,秋招越容易被捞,腾讯和字节都是这样。二是,如果实习表现好,拿到offer,秋招还能直通终面,尤其是如果加了leader微信,即便实习不去,秋招去问一下,可能就会有机会了。 - -**尽量海投** - -建议先广泛投递和面试,拿到多个offer后再决定去向。例如,我没有面试美团,因为以往有“开水团”的说法,但今年美团表现不俗,发放了很多SSP级别的offer。多面试还有助于提高谈薪的底气,尤其是在转正时,可能面临薪资压价的情况。 - -**不设限,敢于尝试** - -针对像我这样成绩平平,但又不甘心平庸的同学,即使你没有明确的去向,例如国企,或者荣誉、GPA不是特别出色,建议还是先面试互联网公司,到十月、十一月再考虑其他行业也不迟。 - -**发挥学历和资源优势** - -例如TP-LINK和联洲等,它们的面试比较简单,开出的薪资也很慷慨,可以早早拿下offer,减轻压力。内推很重要,如果通过内推进入具体的部门,将比在池子里等待更有优势。如果发现内推的部门不符合期待,建议及时终止面试流程。 - -**小心一些大型池子** - -有的地方一些HR为了自己的 KPI,不管方向匹不匹配,捞很多很多人面试,只要面的不是很差,都进池子,导致池子造的无比庞大,然后一直排序不发意向不发 offer,导致流程被卡住。 - -#### 关于实习 - -**实习很重要!** - -如果秋招想找一份互联网的工作,有条件的一定要实习。不仅是作为一份背书,而且在秋招面试的时候,面试官才不会陷入无话可聊,只能用八股算法填满面试时间的情况。先想好实习的目的是什么?实习的目的无外乎两个一是转正,二是背书。 - -**关于转正率**: - -按往年来说转正率比较高的应该是阿里系,但我那一年阿里云出了点问题,不仅转正结果出的晚,而且转正率相比往年大大降低,但据了解,淘天的转正率还可以。注意字节和腾讯的转正率相对较低,美团,pdd的转正甚至不需要转正答辩,只需要提交自评,leader同意即可,所以美团pdd的转正率很高,蚂蚁pdd接近百分之百。如果想求稳,推荐美团蚂蚁,背书也不错,至少拿美团蚂蚁秋招面试是平分项。如果能接受pdd,也可去pdd,今年转正基本都开了很高的薪资,而且18薪,钱还是很多的。 - -**关于实习背书**: - -我个人认为背书会比转正率重要一些,因为目前的形势属实一般,前面也说了腾讯字节的转正率比较低,甚至我感觉秋招的hc数量会比能够转正的实习hc要多,所以拿个背书好的实习,秋招多面多投,结果不会差的。举个例子:字节今年的能够转正暑期实习hc巨少,而且目前的实习往往需要6个月,甚至一年。面试的时候甚至会问能够实习多久,如果只能实习三个月,可能直接被刷。什么叫背书好?title:大厂核心部门>中厂核心部门>大厂非核心>中厂非核心>其他。 - -首先定义什么是大厂,我认为只有BAT御三家称得上大厂,只有他们三家业务很广,横跨多个领域,其他公司例如美团在本地生活,外卖上发力,快手短视频,pdd电商,小红书社区,业务稍微单一了一些。什么是核心部门?首先判断是否盈利,二判断他们在各家的定位。 - -我这边给出一些核心部门供参考: - -腾讯:WXG(微信事业群,注意今年没有秋招,只有实习转正),IEG天美光子(游戏业务),TEG部分(基础技术)。 - -字节:AML(机器学习和算法,包括 AI infra),Tik Tok,抖音,搜广推等。 - -阿里:阿里云(ECS,PolarDB,各种存储包括OSS,SLS等等),淘天阿里妈妈,淘宝首猜,蚂蚁,达摩院等。 - -美团:到店,到家。百度:凤巢,大搜。 - -快手:搜广推。 - -非核心举例:腾讯的pcg(qq),csig部分(云业务);阿里的淘宝买菜、菜鸟、飞猪;字节的飞书等等。 - -这边提一下特殊的两家:华为实习会比较晚出结果,而且没有转正,但秋招面试有直通主管面的机会。pdd今年所有实习生都被分配到了temu做海外,按照它们的力度,估计明年可能也是一样,但做海外也不差就是了。 - -找不到实习怎么办?这边有个很关键的问题,暑期实习还是很卷的,尤其是三个月能转正的暑期实习。那如果最后还是找不到或者导师不放,怎么办?试着找日常实习:这里有个误区,大家看到实习要求上写至少需要5个月or 6个月实习,大家可能就不敢投,但事实上,你提前离职没有人会管,只是可能会不能转正而已。但如果都找不到实习了,这个时候就别挑了。另外在技术面和hr面的时候,不要说导师只放三个月。 -导师不放:请报名参加 google summer of code([https://summerofcode.withgoogle.com/](https://summerofcode.withgoogle.com/))(这个会比较难),中科院开源之夏([https://summer-ospp.ac.cn/](https://summer-ospp.ac.cn/)),我认为含金量还是很不错的,同时也有钱拿,做完都有一万块左右(需要申请,通过之后才能做)。找项目做,这个后面我也会写文章推荐一下项目。 - -实习转正的评价指标,同时也是转正开奖的评价指标:HC(招聘人头数Headcount) > 背景(学历等)≈ 面评 > 转正答辩 > 实习产出。因为实习时间很短,入职之后还需要熟悉环境阅读文档,而且做的事也可能比较琐碎和边边角角,所以大家的产出其实都差不多(大佬除外),这个时候,决定性的因素其实是HC,HC足够,大家都能转正,不够,就会从背景,面评等各方面综合考虑了。 - -**关于一些重要时间节点和相应计划:** - -下面时间节点按照25届毕业生,如果你是其他届的学弟学妹,请自行推算。 - -**2023年x月-2024年3月:两个任务,做项目,写算法题Leetcode。** - -选什么项目做:不要做重复的项目,即使是导师的项目,也请把多个相同方向的项目写到一个里面。建议每个项目主打一个方向:比如一个数据库,一个操作系统,一个后端,一个网络。做完项目之后,请做个总结,因为最后,需要写到简历上,那么就要考虑,这个项目的哪些内容可以写到简历上,如何通过简历上的内容引导面试官提问。如何写一份简历,如何面试,这个后面可能我也会总结一下。 - -怎么写算法题:首先要清楚,笔试的算法题难度和面试不一样,笔试会比较难一些,而面试的算法题基本上都是高频题。要应付面试,做好LeetCode前200道,剑指offer,以及面试高频题(~[https://codetop.cc/home](https://codetop.cc/home))。这里的做好,指的是任何时候拿到都要会做,所以记住,如果算法能力不行,请反复做高频题(不是说记题,而是理解的情况下能够快速做出)。面试做题和在下面做题完全不一样,想象一下,有人盯着摄像头看着你做题,加上时间限制,会不会紧张。如何学习算法题,这个很多大佬都写过文章了,我觉得都还行,入门之后,刷题+记住反复做高频题应该都没问题。另外,建议在找实习的时候,就打好算法基础,因为实习的时候很可能没什么精力继续做算法题,那个时候保持手感罢了。 - -**2024年2月-2024年5月:面试高峰期。** - -2月中旬的时候,阿里云很多部门可能就开始面试了,这个面试记录不进面评系统,仅留存在部门自己手里,要等实习面试系统开了之后才会进去。这就意味着,你可以同时面多个部门,最后选择一个最有希望,面的最好的进系统,建议抓住这个机会多面试,多锻炼面试经验。另外可以用来刷面试经验,一般来说,第一次面试一般都很紧张,表现都不会太好。据我所知,甚至有同学面了七八个部门。我也面了4个部门,除了一个部门第一次面试完全没经验之外,其他均通过了三面。但这个后果就是导致很多部门养鱼严重,池子巨大。34月的时候其他几家陆续开了,也就没有这样的机会了,它们只能同一时间面一个部门,俗称锁简历,就是你如果在某个部门面试的流程中,其他部门是看不到你的简历的,所以有HR联系方式的话建议多催催,但部门那边很有可能养鱼,毕竟部门那边想优中选优。 - -**2024年6月-2024年9月:实习+秋招。** - -建议早点去实习,因为秋招一般七月中旬陆续就开了,边实习边秋招挺折磨的。前面也说了,关系实习转正的决定性因素其实是HC,所以表现正常的情况下,抽些时间看看面经,上班的时候出去面试都是没关系的,mentor也懂。 - -**2024年9月下旬-2024年11月:等待开奖。** - -这个时候就很折磨了,各家面试池子都足够大,面试也都面完了,意向却要拖个两三周,转正结果也可能迟迟不出,甚至最后来个惊喜,告诉你转正不过,开奖更是折磨,一家更比一家晚。安心等待,总会有好结果的。 - -#### 关于算法题 - -**1. 算法题重不重要,需要做到什么程度?** - -面试手撕的算法题基本上都是高频题,做好LeetCode前200道,以及剑指offer的题目基本上就能应付面试了。这里的做好指的是拿到题目可以在15-20min内bug-free通过,要做到这一点需要反复刷高频题。记住面试和平时做题是完全不一样的,面试的时候面试官可能就开着摄像头一直看着你(虽然他可能是在切屏做其他的事情,但是还是会有压力)。**面试的时候手撕算法不通过是大概率被一票否决的。** - -高频题的网站 [https://codetop.cc/home](https://codetop.cc/home),LeetCode Hot 100,剑指Offer现在直接搜索好像出不来了,现在要在LeetCode里面搜LCR才行,或者直接通过搜索引擎搜索 “LeetCode 剑指Offer” [https://blog.csdn.net/weixin\_43840280/article/details/119447204](https://blog.csdn.net/weixin\_43840280/article/details/119447204) - -笔试的算法题没有那么重要,一般不要太差就行;大厂似乎不是很看重笔试成绩(因为客观上笔试有作弊的可能,作弊代价也比较低)。除了阿里硬性要求笔试成绩60分,如果不达60分很有可能会被一票否决。即使有面试机会也可能被HR judge,需要补做一次笔试。阿里的笔试也是比较难一些,比较灵活。 - -**笔试的成绩对面评有影响吗?**这个事情就见仁见智了,当然是笔试成绩越高越好,但似乎跟最后的评级关系不大,还是面评、背景更重要。只有华为会稍微看重一点笔试成绩。 - -**2. 只学过数据结构,零基础如何刷LeetCode?** - -首先,需要去学一下STL的基础用法,掌握常见的如数组、堆、栈的API即可。 - -然后,去网上随便找个分类的题单,比如 代码随想录,~[https://programmercarl.com/](https://programmercarl.com/),开始刷题 - -**怎么刷?** - -你需要明白,学习是一个**通过模仿,然后触类旁通的过程。** - -所以,看到新的题目不会很正常,尤其是在刷题的早期,每个题目给自己5-10min的思考时间,如果没有思路,就直接看题解。 - -**题解怎么看?** - -我的建议是不要看网上整理好的题解(比如代码随想录,把它看做分类题单即可),直接看LeetCode的评论区和题解区,这样对于同一个题目可以看到不同的思考,快速地看两篇题解,然后选择质量最高,自己最容易理解的。**不要照抄代码!看懂思路后自己重新写一遍。** - -题解里面 灵茶山艾府 ~[https://leetcode.cn/u/endlesscheng/](https://leetcode.cn/u/endlesscheng/) 质量很高,他对每日一题,周赛都会有题解,一些题单的总结也非常好。 - -面试高频题,每个题目重复写,不是说短时间内重复写,而是隔一段时间把高频题写一遍,保证拿到题目的第一时间就有思路。不要刻意记答案记代码!高频题写到最后可能每题都要写个3-4遍的。(类似艾宾浩斯遗忘曲线的思路,当然不用做到那么精确) - -**3. 面试手撕算法小技巧** - -**4. 算法进阶** - -基本上做到以上所说的应付常规面试没啥大问题,如果希望能面对笔试题、一些量化的笔面、面试偶尔出现的新题Hard题目游刃有余,或者发现自己对算法题比较喜欢,下面是一些进阶思路。 - -### AI算法 - -本篇内容整理自黄丙晨学长的经验分享: -[https://www.nowcoder.com/discuss/603420182228320256](https://www.nowcoder.com/discuss/603420182228320256) - -黄丙晨学长是2024届复旦计算机硕士毕业生,转载已获作者授权。 - -#### 前言 - -从暑期实习屡战屡败,几乎被所有大中厂拒之门外,到秋招拿下若干大中厂不错的offer,仅不到半年。我也从面试时低声下气的萌新,成长为和面试官吹牛脸不红心不跳的老油条。这其中变化的原因,一部分来自于项目经历有所丰富,但更重要的则是面试经验的增加。作为万千毕业生中非常普通的一个,我没法像大佬那样纯靠自身实力轻松卷赢,因此只能在包装自己上狠下功夫。 - -关于如何准备机试和项目,前面的学长学姐介绍的已经很多了。因此本篇的核心就在于,如何最大化利用自己手上的牌,更好地包装自己,拿到更好的offer。 - -本篇主要分为前言、简历、技术面、主管面、HR面、后记六大模块。当然,有些经验可能并不通用,需要大家针对自身情况进行调整,也请大家多多担待。 - -#### 简历 - -简历优化核心:扬长避短,高度契合 - -简历大致可分为四个部分,教育经历是门槛,项目经历是核心,专业技能是必要条件,奖项荣誉是锦上添花(可选项,没有也无所谓)。重要程度代表着该项对于简历提升的影响大小。这个排序也是建议的简历排版顺序。 - -**教育经历(重要程度:\textcolor{red**{\ding{80}\ding{80}}):} - -1. 最高学历排在前面,学校不错的话可以加个logo(绝对不能造假!) - -2. GPA排名好看写排名,绩点好看写绩点,都不好看就不写 - -3. 导师/实验室牛逼,只管往上写 - -4. 如果啥都没有显得太空,把相关课程写上,成绩好可以附带课程成绩 - -教育背景中,学历学位是最重要的,这部分不能造假,而GPA、课程说实话影响很小,因此整体可操作空间不大。 - -**项目/实习/科研经历(重要程度:\textcolor{red**{\ding{80}\ding{80}\ding{80}\ding{80}\ding{80}}): } - -1. 适当美化在项目中扮演的角色/工作量/成果 - -2. 突出自己用技术做了什么工作,而不是简单罗列技术 - -3. 量化项目成果,尽量使用数字(若有),可以加粗显示。如:“获得字节跳动青训营二等奖”“算法准召提升5\ -4. 控制详略程度,分点阐述。不要一两行就写完,也不要列十几点 - -5. 只保留与应聘方向契合的项目,以二至四个为宜,突出重点项目 - -6. 该部分在整个简历中的篇幅占比约在50\ -项目经历是HR、面试官关心的核心部分,可操作空间最大,因此是拉开简历差距的地方。 - -简历无项目,秒进人才库。关于无项目无实习该怎么办,前人已经提供了几种方法,主要为:Github等开源网站的项目、别人愿意分享的项目(质量最高,且撞车概率低)、网上及线下培训的项目。在此补充一些具体的可速成的项目,开发可以关注公司的线上培训,如字节青训营,算法可以关注近期kaggle比赛/各大会议的workshop比赛。 - -接下来就是对项目的包装。工作量大小、项目中具体担任的角色,乃至该项目的成果和意义,都有极大的发挥空间。只要对于细节了如指掌,哪怕某部分不是你的工作,也成为了你的工作;反之,即使代码是你一行行敲出来的,如果没做好准备回答不出来,真实性也会被质疑。 - -对于开发同学来说,很多开源项目(比如瑞吉外卖)已经烂大街,包括字节青训营的项目,面试官也老早听的耳朵起了老茧。尽量找些冷门的开源项目,或至少在原项目上加以改进(体现自己工作的差异性和思考)。对于算法同学来说,由于项目中本身就包含了大量指标,一定要尽可能多地使用数字量化自己的成果,哪怕只是一个简单的数字,一加粗后也能让人不明觉厉。 - -项目经历部分以2~4个项目为宜,如果项目经历很多,就只保留最相关的项目,不要想着把各个方向的项目往上扔,面试官就会觉得你是个不可多得的全才。之前看到过一位同学,把测试、后端的项目放一个简历里,测试的面试官会怀疑他是否真的会来做测试,后端的面试官会觉得他技术栈太杂,连后端都没学精就去搞测试了,两边不讨好,遇到这种情况就应当一个岗位做一份简历。至于简历是否要在一页内,仁者见仁智者见智,我还是倾向于不要超过一页。校招生通常没有那么多有价值的经历可写,大部分情况是因为不懂得精简而超出了一页。超级简历就有智能一页的功能,很方便。(我一直用超级简历,没必要追求一定用latex做) - -**专业技能/个人评价(重要程度:\textcolor{red**{\ding{80}\ding{80}}):} - -1.对照JD来写 - -2.专业技能和个人评价二选一写即可,分点阐述,三至五行就够了,不要浪费大量篇幅来写 - -专业技能/个人评价是简历的必要部分,但也是提升空间最小的部分,只是HR用来筛选掉专业不对口的候选人的。如何让自己的简历显得专业对口?最稳妥的方式,就是照着岗位的JD抄。(与期望招聘对象重合度100\ -奖项荣誉(可选) - -奖项荣誉较少或简历空间不足,合并到教育经历中;奖项荣誉较多或仍有简历空间,则单独列出,但不要占据太多篇幅,优先保留最相关的奖项。至于学生工作与技术岗毫无关系,没必要写。 - -最后附上一张我的秋招简历\ref{简历},以供参考~ - -\begin{figure}[htbp] - \centering - \includegraphics[trim=260 30 260 30, clip, width=\textwidth, height=\textheight, keepaspectratio=false]{img/hbc.pdf} - \caption{简历样例} - \label{简历} -\end{figure} - -\clearpage - -#### 技术面 - -关于技术面,前人之述备矣,就不重复造轮子了,在此只是简单提一下。技术面的核心在于:掌握主动权,将面试引向自己熟悉可控的领域,同时偷偷给自己贴正面标签。 - -基本所有的面试,都有自我介绍的环节。在自我环节时,若只是简单重复简历上的内容,就浪费了自我宣传的最佳时机。像自我评价/他人评价,以及一些不太相关的经历、项目,是不方便写在简历里的,此时正好拿出来讲,例如: - -对你感兴趣的面试官,不会因为你自我介绍时多说了几句不太相关的经历就对你印象不好。如果面试官没耐心打断你自我介绍,大概率本就是KPI。如此在自我介绍中包装自己,不仅在前期就能留下一个不错的印象,而且有概率引发面试官的追问,既能水时长,还能继续包装自己。比如我曾经遇到的,“你C++做过什么项目?”“能介绍下是怎么从零开始探索新的方向的吗?当中遇到了哪些困难?”虽然追问的概率不大,但还是要注意对于可能的追问要有个底,别光顾着往脸上贴金,忽略了细节准备。 - -我将面试问题分为三类:**八股题,细节题,技术题。** - -这三类中,技术题是最难的,因为技术题的边界太广了,无法保证自己可以掌握每一个知识点。由于专业领域限制,除非瞎猫碰到死耗子,否则大多时候我都答不出来非自己领域的专业技术题。因此,剩下八股题和细节题是我们重点要争取的,八股题可以提前背诵,而细节题是考察做过的项目细节,通过多多温习就能掌握,甚至不需要背诵,是我最喜欢的题型。 - -因此如何掌控整场面试的走向,就变成了如何引导面试官多问细节题和八股题,而不要让面试官把话题转向自己提前准备且熟悉的技术题。关键在于回答时故意留坑,在回答上一个问题时,就有意识地往下一个八股/细节去引,等待面试官去问。比如: - -Q:你的这个项目做了哪些改进,获得了这样的提升? - -A:由于模型需要上线,对于计算量和模型大小的要求较高。前期我做了一些轻量化的剪枝实验,进行了backbone的选择,参数下降xx,计算量下降xx,最终选择了xx作为backbone。在训练过程中,发现模型因为类别不平衡存在明显性能问题,从数据、模型等角度进行了优化,最终实现了xx的性能提升。不过我也发现,学术界和工业界还是明显不同的,我复现了a、b、c的策略(偷偷贴金,体现自己代码能力和读的论文多),最后都不如多做几遍数据清洗,补充少样本类别效果来得好。 - -接下来,面试官可能追问以下问题: - -如果真遇到回答不出来的技术题,不要硬着头皮回答,大大方方地承认这块了解不够,同时再像上面那样,抛给面试官一些可以询问的点:“这个领域我之前了解不多。不过对于xxx,我也有些项目经验”。大方承认自己的知识漏洞不是减分项,回答错误或者支支吾吾答不出来才是。 - -#### 主管面 - -主管面虽然也属于技术面的一环,但在我看来,主管面的面试逻辑和前几轮的技术面是差异很大的,而且很大程度影响你的offer评级,因此单独列一节。 - -和前面的技术面不同,大多数主管并不会关注技术细节,往往是站在更高层次的角度思考问题。他们更关注的是人与宏观的技术。(毕竟主管们可能早就不在一线写代码了)核心在于让主管了解你,并且聊的开心。 - -自我介绍时,可以适当减少技术细节的叙述,增加对个人的包装。整体思路和技术面是类似的,回答时故意留坑,只不过留坑的目的有所变化,从引导面试官问技术细节和八股,变为让主管更好地了解自己是什么样的人,以及对技术的宏观层面的思考。比如这样自我介绍: - -#### HR面 - -到达HR面,只要不作死(比如,“如果a公司给我发offer的话,我就不来贵公司了”,我曾经犯过这样的错),别太老实,该舔的时候舔,就能顺利拿到offer(池子里还有其他人的情况除外)。如果是实习,到这一步就完美结束了,或是等待后续的排序结果。如果是正式招聘,则还有一个重要的环节——谈薪。 - -谈薪前,有一个问题几乎是必问的:“您现在手上有哪些offer?” - -无论有没有offer,一定要回答有,至少说offer正在审批阶段。如果说没有offer,就是自愿将议价权交给对方,成为任人宰割的羔羊,给多少价对方全凭良心。且很多公司一开始都会压价,就靠别家offer来argue最终薪资。 - -谈薪主要有两种形式:1. OC后直接给出薪酬方案;2. 先询问预期薪酬,后定薪酬方案。 - -第一种形式谈薪比较简单,直接给出薪酬方案能谈的涨幅不大,基本在当前评级内浮动。比如白菜价的范围是20~23k,offer给了20k,通过谈薪有机会要到23k、24k,但不太可能超过当前评级薪酬太多。 - -第二种形式谈薪较为复杂。如果预期薪酬报低了,HR真不会跟你客气,稍微多给你一点意思一下;如果预期薪酬过高,HR发现没法满足,甚至会连通知都没有就把offer取消了。 - -在这分为两种情况:offershow/牛客上有薪资爆料和无薪资爆料的公司。有薪资爆料的很简单,了解投递岗位白菜/sp/ssp的薪资水平后,结合自己的面试感受和表现,估计自己是什么水平,可以适当多要一两千。一些初创公司往往没有薪资爆料,这时候就需要对行业薪酬有个大致的预期,然后采用分段试探谈薪法: - -“目前手上已有一个a公司的offer,20k。综合考虑贵公司的工作内容和发展前景,还是想选择贵公司,期望不低于这个价。” - -在第一轮时,可以用相对一般的预期薪酬进行试探。如果面试公司比a公司规模小,报价也在承受范围内的话,一定会给出稍高一些的价格。如果感觉HR答应的很爽快,还有谈薪空间,过几天可以尝试进一步试探: - -“昨天b公司也发了offer,24k。我真的很想加入贵公司,您这边能否再帮我争取一下?” - -如此便能降低谈薪太少吃亏、谈薪太多offer取消的概率。 - -#### 后记 - -时光飞逝,转眼间距离我发出关于2024暑期实习迷茫求助贴的那一天,已经过去了一年。早期我面试经验非常有限,几乎所有的大中厂都将我拒之门外。当时的我非常迷茫,甚至一度考虑转换求职方向。于是,我决定在牛客上分享自己的经历,向大家征询意见。让我意外的是,这一分享引来了很多热心朋友的帮助和鼓励。无论是私信还是评论,大家都给了我莫大的支持,还推荐了不少实习机会,让我感动不已。如今,我整理出了这篇求职攻略,希望能将这份善意继续传递下去,尽我所能帮助更多的后来者。 - -如今,计算机行业的黄金时代已成过去,就业市场供过于求。要想获得一份理想的工作,除了自身实力过硬,还需要寻找一些新的突破点。因此,在这篇攻略中,我分享了一些独特的技巧和方法。当然,打铁还需自身硬,掌握技巧的前提是拥有足够的能力,包装自己的前提是有内容可包装。所以,希望大家不要本末倒置,过度追求包装而忽略了基础实力的提升。 - -最后,再次感谢所有帮助和鼓励过我的朋友们!在经历了心态崩溃之后,我很快调整了状态,继续投递简历,寻找机会。去年五月底,我终于拿到了第一家,也是唯一一家中型企业的实习机会。相比于暑期的坎坷经历,由于积累了更多的经验,秋招显得顺利了许多。如今,我已经入职美团,开启了人生的新篇章。江湖路远,有缘再会!以下是我的个人主页,其中有我的联系方式,欢迎有想咨询问题的学弟学妹~ - -**个人主页:**\url{YellowPancake.github.io} - -### 产品经理 - -本篇内容整理自编者对佩奇(化名)的采访录音。佩奇是一位985本科、港三硕士的2023年cs科班毕业生,目前在一家互联网大厂担任产品经理。编者整理了其中与求职经验相关的部分内容,并以第一人称的形式呈现。 - -#### 准备 - -首先,如果你和我一样是计算机相关背景的同学,或者来自其他背景但想转行做产品经理,又不知道从何下手的话,我的个人建议是,如果时间充裕,最好是先去找一个创业方向的项目,组建一个团队并推动它完成,比如参加一些创业的比赛之类的去完成这个事情。为什么这么说呢?因为我在面试时发现,面试官最看重的一点是,你是否有创业经历,或者是否有带领团队完成项目的经验,最好是跟软件或互联网有关,如果无关,那你组建一个二手交易团队之类的项目也ok。因为其实产品经理最重要的能力就是你能把团队拉起来,然后让大家跟着你去干事情。在我的求职过程中,我注意到简历上大家都在写自己的实习经历。但其实如果你有创业的经历,面试官通常会更喜欢。 - -另外一个重要的准备就是提前实习,多实习几家,多去找大厂的产品实习(小公司的产品实习感觉不如创业项目重要),尤其是秋招前的那个暑期实习,大概3,4月份就要开始找,如果暑期实习表现的还不错的话,会有留用的HC,那你就可以拿到一个转正的offer。秋招的时候就会相对没有那么大的心理压力。另外一方面,是大厂实习会给你带来一些靠谱的项目经历,可以在秋招面试的时候讲,会很有帮助。还有一点,多实习可以让你体验到不同的公司的不同的岗位,然后去找到你到底喜欢什么工作环境,这非常重要! - -如果你的时间不够,且不足以做以上这些准备,在没有产品经理相关的背景下,我的建议是,首先要了解一下产品经理到底是做什么的。你只需要对产品经理的工作内容有一个基本的了解就行。因为我之前也去网上查阅了很多资料,也跟很多同学聊天交流过。我参加了不少面试,发现其实面试的时候,考官并不会非常严格地考察你的产品经理专业能力,更多的是考察你的软性实力。比如说你的沟通能力,你能不能和别人很好地沟通,能不能把事情讲清楚讲明白;再比如你的逻辑思维能力是否过关,是否有一些很好的创意并能够付诸实践等等。 - -如果你真的想做产品经理,用有限的时间去打磨或者包装这些软性技能可能比去学一个PMP或者项目管理课程更重要。很多人可能会去网上找一些产品经理的项目来包装自己,但我觉得这种做法并不好。 - -#### 实习转正小技巧 - -当初暑期实习时,我把所有的赌注都压在了这份实习上,因为身边的人都说有转正的机会,所以我没有考虑其他实习机会,也没有提前参加秋招的提前批。很多人都提到,大厂的实习至关重要,尤其是暑期的三到四月份,这是一个关键时间段。大厂的提前批通常启动得比较早,可能在三到五月份就已经开始,到了六七月份更是如此。秋招的实习机会通常在六七月份就已经出现了,如果你能赶上第一批投简历,机会就会大大增加。虽然有“金三银四、金九银十”的说法,但在大厂,这个时间节点可能会稍微提前一点。 - -当时我没有投其他简历,因为转正通知的时间相对较晚,等到8月中旬才通知。这就带来了一个问题:当我收到转正通知时,秋招的提前批已经结束了。此外,在等待转正结果的过程中,我感到非常痛苦,几乎每天都带着痛苦的面具去上班。后来,我和一些同事交流时,他们告诉了我一个非常有用的小技巧。 - -如果你在哪个公司实习,并且觉得这个地方无法转正,或者想换个部门的话,你要抓紧利用公司内部的通讯工具,私聊其他组的面试官,或者找相关的同学帮忙打听情况。比如说,你的同学在其他组工作,可以请他帮忙问问,看看其他组有没有缺人的情况。如果有机会,你就可以尝试转过去,哪怕不面试也可以去了解一下情况。 - -当时,我也是动用了各种人脉,包括之前给我模拟面试的面委会的面试官。我私聊了他,说“你好,你还记得我吗?之前我在面试中跟你聊过。”然后他回答说记得我。我就继续说,我这边可能转正有一些问题,问他那边有没有相关的组缺人,我想再试一下。这样他就给了我一次机会,让我去尝试面试其他组。 - -另外,我还找了我的研究生同学,他是技术岗的,我请他帮忙问一下对应的产品部门有没有招人。同样,我找了本科同学,他在其他部门工作,也是技术岗的,让他也帮忙问问相关部门有没有招人。 - -总之,如果你在实习的这条路上遇到瓶颈,不妨主动一些,去找其他路径,看看能不能让你的路走得更好。要迈出这一步,主动去试一下,就会有机会。 - -其实很多理工科的同学,包括我在内,都不太主动,特别是非技术岗的同学更是如此。但如果有人告诉你这条路是可行的,我觉得你应该尝试一下,毕竟尝试一下总有可能成功,如果你不试,那肯定就失败了。尤其是非技术岗的同学,一定要主动一点,机会就在你主动迈出的那一步中。 - -#### 秋招经验 - -**坚持海投:** - -一定要多投简历,我的建议是每周保持一定的节奏,大概投15个公司左右,涵盖15到20个岗位。第一周投简历,第二周就会有笔试和测评,然后顺利的话,第三周可能就会有面试。不顺利的话,面试的时间可能会不确定,需要耐心等待。 - -我当时前前后后总共投了大概有100多个岗位,并用飞书文档做了一个记录。我也建议大家,如果你真的全身心地投入找工作,可以用一些文档工具记录下你投了哪些公司、哪些岗位,以及每个岗位的进展情况。这样至少可以帮助你掌握整个节奏。 - -最终,我大概参加了30到40场笔试,包括测评等内容。而面试的数量大概在二三十场左右。其中有一半的面试在一面的时候就被淘汰了,剩下的一半如果二面顺利的话,通常二面三面都能通过。总之,我陆陆续续地面试了很多公司。这样能收获很多机会,也能高频率的去训练我们应对面试的能力。 - -**笔试部分:** - -笔试主要就是综合测评,比较类似公务员考试的行测,反正网上有题库,自己多做一做就妥了 - -**面试部分:** - -在面试过程中,最最重要的一点是自我介绍。一定要把自我介绍讲清楚。如果你的经历比较多,只需要挑两个重点来说,比如说你的一段校园经历。把这段经历讲清楚,并且适当地给面试官“挖坑”。比如,我在面试时会提到“我组建了一个团队,做了一个三人小团队的项目。”这时,面试官可能会问你团队里有哪些成员、项目是如何进行的、最终达到了什么样的结果。要把这些事情讲清楚,可以考虑使用 STAR 法则。 - -STAR法则是情境(situation)、任务(task)、行动(action)、结果(result)四项的缩写。按这样的结构讲面试官听起来会比较清晰。此外,自我介绍一定不要太长,只需讲你做得比较好的几件事就行了。通常,面试官会根据你的自我介绍问一些相关问题,比如你在这段经历中做了什么,遇到了哪些困难,又是如何解决的。他们可能还会根据你的回答,进一步问一些细节,看看这些经历是否真的是你亲身经历的。如果你在简历或自我介绍中过度包装或者存在欺骗行为,那很有可能会直接被淘汰。 - -所以,第一,自我介绍和简历包装不要过度,真实才是最重要的。第二,自己做过的事情一定要能够讲清楚。如果你真的想不起来,就坦诚地说“对不起,时间太久了,我忘了。”千万不要编故事,因为编的东西很容易被识破,导致失败。另外一个重要的点是,面试时自我介绍完了之后,面试官就会对你有一个初步的印象。如果你自我介绍得不好,可能面试官就只会简单聊两句,然后直接挂掉。如果表现不错,面试官才会有兴趣继续深入了解。 - -面试的流程一般是:第一,自我介绍;第二,根据自我介绍问问题;第三,可能会问一些产品经理的基础概念,比如“你知道产品经理的主要职责是什么吗?”“你更喜欢做 B 端产品经理还是 C 端产品经理?为什么?” 面试官还可能会考察你的综合能力,比如根据你的简历问你在学校担任学生会主席的原因,这些问题你都要提前准备好,尽量讲清楚。 - -我的经验是,面试官往往更关注你在自我介绍中提到的项目经历、社工经历,以及你对产品经理的基本了解。特别是在讨论实习经历时,面试官通常会通过询问你参与过的项目,来判断你的实习是否“靠谱”。他们可能会问你在实习期间做了什么项目,你在项目中具体负责什么,遇到了哪些困难,以及你是如何解决这些问题的。 - -对于初级面试者来说,可能不太注意自己在项目中遇到过什么困难,或者不知道自己是怎么解决问题的,只知道项目最终完成了。但这两个问题是非常核心的,一定要注意,只要能把这两个问题回答好,你的面试就成功了一半。 - -他们并不在意你做的事情规模有多大,而是看你是否能清晰地表达。作为实习生,面试官通常认为你所做的事情就是一些基础工作,所以不要把自己的经历包装得太过宏大,这样反而会适得其反。保持真诚和坦诚的沟通非常重要。 - -实际上,在我面试的前期,我还比较“装”,但到后来当我拿到一些 offer 或者感觉自己有把握时,反而变得随意了,往往这样的表现反而效果更好。面试其实并不是一个一板一眼的考试过程,更强调的是你与面试官之间的互动。有时候,你的精神状态和热情特质会影响面试官的判断。即使回答得不够完美,只要面试官在与你的互动中感到愉快,也有可能让你通过面试。 diff --git a/src/experience/internet/ai/index.md b/src/experience/internet/ai/index.md new file mode 100644 index 0000000..37e9281 --- /dev/null +++ b/src/experience/internet/ai/index.md @@ -0,0 +1,140 @@ +### AI算法 + +本篇内容整理自黄丙晨学长的经验分享: +[https://www.nowcoder.com/discuss/603420182228320256](https://www.nowcoder.com/discuss/603420182228320256) + +黄丙晨学长是2024届复旦计算机硕士毕业生,转载已获作者授权。 + +#### 前言 + +从暑期实习屡战屡败,几乎被所有大中厂拒之门外,到秋招拿下若干大中厂不错的offer,仅不到半年。我也从面试时低声下气的萌新,成长为和面试官吹牛脸不红心不跳的老油条。这其中变化的原因,一部分来自于项目经历有所丰富,但更重要的则是面试经验的增加。作为万千毕业生中非常普通的一个,我没法像大佬那样纯靠自身实力轻松卷赢,因此只能在包装自己上狠下功夫。 + +关于如何准备机试和项目,前面的学长学姐介绍的已经很多了。因此本篇的核心就在于,如何最大化利用自己手上的牌,更好地包装自己,拿到更好的offer。 + +本篇主要分为前言、简历、技术面、主管面、HR面、后记六大模块。当然,有些经验可能并不通用,需要大家针对自身情况进行调整,也请大家多多担待。 + +#### 简历 + +简历优化核心:扬长避短,高度契合 + +简历大致可分为四个部分,教育经历是门槛,项目经历是核心,专业技能是必要条件,奖项荣誉是锦上添花(可选项,没有也无所谓)。重要程度代表着该项对于简历提升的影响大小。这个排序也是建议的简历排版顺序。 + +**教育经历(重要程度:\textcolor{red**{\ding{80}\ding{80}}):} + +1. 最高学历排在前面,学校不错的话可以加个logo(绝对不能造假!) + +2. GPA排名好看写排名,绩点好看写绩点,都不好看就不写 + +3. 导师/实验室牛逼,只管往上写 + +4. 如果啥都没有显得太空,把相关课程写上,成绩好可以附带课程成绩 + +教育背景中,学历学位是最重要的,这部分不能造假,而GPA、课程说实话影响很小,因此整体可操作空间不大。 + +**项目/实习/科研经历(重要程度:\textcolor{red**{\ding{80}\ding{80}\ding{80}\ding{80}\ding{80}}): } + +1. 适当美化在项目中扮演的角色/工作量/成果 + +2. 突出自己用技术做了什么工作,而不是简单罗列技术 + +3. 量化项目成果,尽量使用数字(若有),可以加粗显示。如:“获得字节跳动青训营二等奖”“算法准召提升5\ +4. 控制详略程度,分点阐述。不要一两行就写完,也不要列十几点 + +5. 只保留与应聘方向契合的项目,以二至四个为宜,突出重点项目 + +6. 该部分在整个简历中的篇幅占比约在50\ +项目经历是HR、面试官关心的核心部分,可操作空间最大,因此是拉开简历差距的地方。 + +简历无项目,秒进人才库。关于无项目无实习该怎么办,前人已经提供了几种方法,主要为:Github等开源网站的项目、别人愿意分享的项目(质量最高,且撞车概率低)、网上及线下培训的项目。在此补充一些具体的可速成的项目,开发可以关注公司的线上培训,如字节青训营,算法可以关注近期kaggle比赛/各大会议的workshop比赛。 + +接下来就是对项目的包装。工作量大小、项目中具体担任的角色,乃至该项目的成果和意义,都有极大的发挥空间。只要对于细节了如指掌,哪怕某部分不是你的工作,也成为了你的工作;反之,即使代码是你一行行敲出来的,如果没做好准备回答不出来,真实性也会被质疑。 + +对于开发同学来说,很多开源项目(比如瑞吉外卖)已经烂大街,包括字节青训营的项目,面试官也老早听的耳朵起了老茧。尽量找些冷门的开源项目,或至少在原项目上加以改进(体现自己工作的差异性和思考)。对于算法同学来说,由于项目中本身就包含了大量指标,一定要尽可能多地使用数字量化自己的成果,哪怕只是一个简单的数字,一加粗后也能让人不明觉厉。 + +项目经历部分以2~4个项目为宜,如果项目经历很多,就只保留最相关的项目,不要想着把各个方向的项目往上扔,面试官就会觉得你是个不可多得的全才。之前看到过一位同学,把测试、后端的项目放一个简历里,测试的面试官会怀疑他是否真的会来做测试,后端的面试官会觉得他技术栈太杂,连后端都没学精就去搞测试了,两边不讨好,遇到这种情况就应当一个岗位做一份简历。至于简历是否要在一页内,仁者见仁智者见智,我还是倾向于不要超过一页。校招生通常没有那么多有价值的经历可写,大部分情况是因为不懂得精简而超出了一页。超级简历就有智能一页的功能,很方便。(我一直用超级简历,没必要追求一定用latex做) + +**专业技能/个人评价(重要程度:\textcolor{red**{\ding{80}\ding{80}}):} + +1.对照JD来写 + +2.专业技能和个人评价二选一写即可,分点阐述,三至五行就够了,不要浪费大量篇幅来写 + +专业技能/个人评价是简历的必要部分,但也是提升空间最小的部分,只是HR用来筛选掉专业不对口的候选人的。如何让自己的简历显得专业对口?最稳妥的方式,就是照着岗位的JD抄。(与期望招聘对象重合度100\ +奖项荣誉(可选) + +奖项荣誉较少或简历空间不足,合并到教育经历中;奖项荣誉较多或仍有简历空间,则单独列出,但不要占据太多篇幅,优先保留最相关的奖项。至于学生工作与技术岗毫无关系,没必要写。 + +最后附上一张我的秋招简历\ref{简历},以供参考~ + +\begin{figure}[htbp] + \centering + \includegraphics[trim=260 30 260 30, clip, width=\textwidth, height=\textheight, keepaspectratio=false]{img/hbc.pdf} + \caption{简历样例} + \label{简历} +\end{figure} + +\clearpage + +#### 技术面 + +关于技术面,前人之述备矣,就不重复造轮子了,在此只是简单提一下。技术面的核心在于:掌握主动权,将面试引向自己熟悉可控的领域,同时偷偷给自己贴正面标签。 + +基本所有的面试,都有自我介绍的环节。在自我环节时,若只是简单重复简历上的内容,就浪费了自我宣传的最佳时机。像自我评价/他人评价,以及一些不太相关的经历、项目,是不方便写在简历里的,此时正好拿出来讲,例如: + +对你感兴趣的面试官,不会因为你自我介绍时多说了几句不太相关的经历就对你印象不好。如果面试官没耐心打断你自我介绍,大概率本就是KPI。如此在自我介绍中包装自己,不仅在前期就能留下一个不错的印象,而且有概率引发面试官的追问,既能水时长,还能继续包装自己。比如我曾经遇到的,“你C++做过什么项目?”“能介绍下是怎么从零开始探索新的方向的吗?当中遇到了哪些困难?”虽然追问的概率不大,但还是要注意对于可能的追问要有个底,别光顾着往脸上贴金,忽略了细节准备。 + +我将面试问题分为三类:**八股题,细节题,技术题。** + +这三类中,技术题是最难的,因为技术题的边界太广了,无法保证自己可以掌握每一个知识点。由于专业领域限制,除非瞎猫碰到死耗子,否则大多时候我都答不出来非自己领域的专业技术题。因此,剩下八股题和细节题是我们重点要争取的,八股题可以提前背诵,而细节题是考察做过的项目细节,通过多多温习就能掌握,甚至不需要背诵,是我最喜欢的题型。 + +因此如何掌控整场面试的走向,就变成了如何引导面试官多问细节题和八股题,而不要让面试官把话题转向自己提前准备且熟悉的技术题。关键在于回答时故意留坑,在回答上一个问题时,就有意识地往下一个八股/细节去引,等待面试官去问。比如: + +Q:你的这个项目做了哪些改进,获得了这样的提升? + +A:由于模型需要上线,对于计算量和模型大小的要求较高。前期我做了一些轻量化的剪枝实验,进行了backbone的选择,参数下降xx,计算量下降xx,最终选择了xx作为backbone。在训练过程中,发现模型因为类别不平衡存在明显性能问题,从数据、模型等角度进行了优化,最终实现了xx的性能提升。不过我也发现,学术界和工业界还是明显不同的,我复现了a、b、c的策略(偷偷贴金,体现自己代码能力和读的论文多),最后都不如多做几遍数据清洗,补充少样本类别效果来得好。 + +接下来,面试官可能追问以下问题: + +如果真遇到回答不出来的技术题,不要硬着头皮回答,大大方方地承认这块了解不够,同时再像上面那样,抛给面试官一些可以询问的点:“这个领域我之前了解不多。不过对于xxx,我也有些项目经验”。大方承认自己的知识漏洞不是减分项,回答错误或者支支吾吾答不出来才是。 + +#### 主管面 + +主管面虽然也属于技术面的一环,但在我看来,主管面的面试逻辑和前几轮的技术面是差异很大的,而且很大程度影响你的offer评级,因此单独列一节。 + +和前面的技术面不同,大多数主管并不会关注技术细节,往往是站在更高层次的角度思考问题。他们更关注的是人与宏观的技术。(毕竟主管们可能早就不在一线写代码了)核心在于让主管了解你,并且聊的开心。 + +自我介绍时,可以适当减少技术细节的叙述,增加对个人的包装。整体思路和技术面是类似的,回答时故意留坑,只不过留坑的目的有所变化,从引导面试官问技术细节和八股,变为让主管更好地了解自己是什么样的人,以及对技术的宏观层面的思考。比如这样自我介绍: + +#### HR面 + +到达HR面,只要不作死(比如,“如果a公司给我发offer的话,我就不来贵公司了”,我曾经犯过这样的错),别太老实,该舔的时候舔,就能顺利拿到offer(池子里还有其他人的情况除外)。如果是实习,到这一步就完美结束了,或是等待后续的排序结果。如果是正式招聘,则还有一个重要的环节——谈薪。 + +谈薪前,有一个问题几乎是必问的:“您现在手上有哪些offer?” + +无论有没有offer,一定要回答有,至少说offer正在审批阶段。如果说没有offer,就是自愿将议价权交给对方,成为任人宰割的羔羊,给多少价对方全凭良心。且很多公司一开始都会压价,就靠别家offer来argue最终薪资。 + +谈薪主要有两种形式:1. OC后直接给出薪酬方案;2. 先询问预期薪酬,后定薪酬方案。 + +第一种形式谈薪比较简单,直接给出薪酬方案能谈的涨幅不大,基本在当前评级内浮动。比如白菜价的范围是20~23k,offer给了20k,通过谈薪有机会要到23k、24k,但不太可能超过当前评级薪酬太多。 + +第二种形式谈薪较为复杂。如果预期薪酬报低了,HR真不会跟你客气,稍微多给你一点意思一下;如果预期薪酬过高,HR发现没法满足,甚至会连通知都没有就把offer取消了。 + +在这分为两种情况:offershow/牛客上有薪资爆料和无薪资爆料的公司。有薪资爆料的很简单,了解投递岗位白菜/sp/ssp的薪资水平后,结合自己的面试感受和表现,估计自己是什么水平,可以适当多要一两千。一些初创公司往往没有薪资爆料,这时候就需要对行业薪酬有个大致的预期,然后采用分段试探谈薪法: + +“目前手上已有一个a公司的offer,20k。综合考虑贵公司的工作内容和发展前景,还是想选择贵公司,期望不低于这个价。” + +在第一轮时,可以用相对一般的预期薪酬进行试探。如果面试公司比a公司规模小,报价也在承受范围内的话,一定会给出稍高一些的价格。如果感觉HR答应的很爽快,还有谈薪空间,过几天可以尝试进一步试探: + +“昨天b公司也发了offer,24k。我真的很想加入贵公司,您这边能否再帮我争取一下?” + +如此便能降低谈薪太少吃亏、谈薪太多offer取消的概率。 + +#### 后记 + +时光飞逝,转眼间距离我发出关于2024暑期实习迷茫求助贴的那一天,已经过去了一年。早期我面试经验非常有限,几乎所有的大中厂都将我拒之门外。当时的我非常迷茫,甚至一度考虑转换求职方向。于是,我决定在牛客上分享自己的经历,向大家征询意见。让我意外的是,这一分享引来了很多热心朋友的帮助和鼓励。无论是私信还是评论,大家都给了我莫大的支持,还推荐了不少实习机会,让我感动不已。如今,我整理出了这篇求职攻略,希望能将这份善意继续传递下去,尽我所能帮助更多的后来者。 + +如今,计算机行业的黄金时代已成过去,就业市场供过于求。要想获得一份理想的工作,除了自身实力过硬,还需要寻找一些新的突破点。因此,在这篇攻略中,我分享了一些独特的技巧和方法。当然,打铁还需自身硬,掌握技巧的前提是拥有足够的能力,包装自己的前提是有内容可包装。所以,希望大家不要本末倒置,过度追求包装而忽略了基础实力的提升。 + +最后,再次感谢所有帮助和鼓励过我的朋友们!在经历了心态崩溃之后,我很快调整了状态,继续投递简历,寻找机会。去年五月底,我终于拿到了第一家,也是唯一一家中型企业的实习机会。相比于暑期的坎坷经历,由于积累了更多的经验,秋招显得顺利了许多。如今,我已经入职美团,开启了人生的新篇章。江湖路远,有缘再会!以下是我的个人主页,其中有我的联系方式,欢迎有想咨询问题的学弟学妹~ + +**个人主页:**\url{YellowPancake.github.io} diff --git a/src/experience/internet/backend/cpp.md b/src/experience/internet/backend/cpp.md new file mode 100644 index 0000000..8adef82 --- /dev/null +++ b/src/experience/internet/backend/cpp.md @@ -0,0 +1,160 @@ +# C++基架 + +本篇内容整理自蒋雨宸学长的经验分享,已获得原作者授权,蒋学长是2024届南京大学计算机硕士毕业生,以下是他的微信号和知乎链接。 + +**微信号:LIMBO\_42** + +**知乎主页:** [https://www.zhihu.com/people/luo-chen-96-77](https://www.zhihu.com/people/luo-chen-96-77) + +## 前言 + +我的BG是985科班本硕,求职方向为基架,实习经历是在阿里云某核心部门(这为我加了不少分)。主力编程语言是C++,曾参与过一些国外的知名课程,比如CMU的15445和MIT的6.824,6.S081,以及TIDB的TinySQL项目。代码题上,我在LeetCode上刷过了1000道题,不过学习成绩中等,没有什么奖项,也没怎么参与过学生活动(在国企求职时这算是个不小的减分项)。 + +最终,我拿到了几个不错的offer,包括钉钉、阿里云、蚂蚁、百度、快手和TP-LINK,基本都是SSP级别的,快手还特批了一个待遇,比快star略低一档。 + +整个秋招从七月持续到十一月末,终于尘埃落定。在这段时间里,我经历了多个阶段,经常在内耗和纠结中徘徊,最终选择了自己实习过的阿里云。我想给自己做个总结,回顾秋招的各个阶段,以及我在做出每项选择时的思考逻辑,希望能对后来的学弟学妹们有所帮助。 + +## 前期准备 + +在准备方面我认为的重要性排序是:技术方向 > 实习 ~ 学历 ~ 顶会论文 > 项目 + +**方向:** +开发无脑推荐后端。基架选择建议仅限于两种情况:一是实验室专注于OS、DB、网络等领域,拥有深厚的积累和强大的师兄网络;二是对底层技术有极高的兴趣。测开和前端适合背景稍弱但希望进入大厂的同学。关于算法,尽管我不是专家,但注意到今年算法与开发之间的差距增大,建议抓紧时间进入大模型领域,即使没有论文也不是问题,关键是方向对口的实习经验。一定要关注职业方向的广度,这有助于跳槽或应对裁员时更容易找到工作。我后续可能会详细讨论这个话题。 + +**语言:** +后端推荐使用Java,是绝大多数人的万金油选择。C++需要和具体的方向结合,比如OS,DB,网络,图形学,音视频,我比较推荐网络,因为进可游戏服务端,退可去各家基架部门。 + +**实习:** +目前来看秋招方向强相关,各家面试都希望你至少有一些相关的经验,所以如果有实习的机会,一定要去,实习推荐去强背书的地方,核心部门,实习就是一段经历,背书比较重要,转正没那么重要(压价 or 压根就不能转正 or 秋招拖得很久),不建议 all in 转正,谈薪环节需要其他家的 offer。 + +**学历:** +目前各家大厂都有卡本科学历和科班的情况,其中有一些很严重(非硕士非23所要走特批) + +**论文:** +除非是顶级会议的论文,否则大部分不被重视。因此,在确保满足毕业要求的前提下,应为求职多做准备。 + +**项目:** +项目我虽然列在最后一项,但其实说白了方向,实习,论文,都是项目,所以说要通过面试,项目的重要性一点不差。请选择有亮点的项目写到简历上,并且列出具体使用的技术,如何写一份好的简历也很重要,需要学会包装自己,引导面试官向你准备好的问题上引. + +## 秋招过程 + +### **提前准备,早投秋招** + +现在各家公司的秋招都很早就开始了。面对需要在实习期间同时准备秋招的情况,一些同学选择在实习结束后再开始投递简历,认为早投只是为了排序。但实际上,如果等到实习结束再投,核心部门的候选人名单可能已经满员,错过了最佳投递时机。例如,我在腾讯因为错误填写了毕业时间,错过了优先投递的时间,结果只能选择剩余的部门。 + +### **实习转正后不要停** + +实习拿到 offer 之后也要多面,有直通终面的可能:即使实习拿到满意的offer,也得多面,好处有两个:一是留的面评越好,秋招越容易被捞,腾讯和字节都是这样。二是,如果实习表现好,拿到offer,秋招还能直通终面,尤其是如果加了leader微信,即便实习不去,秋招去问一下,可能就会有机会了。 + +### **尽量海投** + +建议先广泛投递和面试,拿到多个offer后再决定去向。例如,我没有面试美团,因为以往有“开水团”的说法,但今年美团表现不俗,发放了很多SSP级别的offer。多面试还有助于提高谈薪的底气,尤其是在转正时,可能面临薪资压价的情况。 + +### **不设限,敢于尝试** + +针对像我这样成绩平平,但又不甘心平庸的同学,即使你没有明确的去向,例如国企,或者荣誉、GPA不是特别出色,建议还是先面试互联网公司,到十月、十一月再考虑其他行业也不迟。 + +### **发挥学历和资源优势** + +例如TP-LINK和联洲等,它们的面试比较简单,开出的薪资也很慷慨,可以早早拿下offer,减轻压力。内推很重要,如果通过内推进入具体的部门,将比在池子里等待更有优势。如果发现内推的部门不符合期待,建议及时终止面试流程。 + +### **小心一些大型池子** + +有的地方一些HR为了自己的 KPI,不管方向匹不匹配,捞很多很多人面试,只要面的不是很差,都进池子,导致池子造的无比庞大,然后一直排序不发意向不发 offer,导致流程被卡住。 + +## 关于实习 + +### **实习很重要!** + +如果秋招想找一份互联网的工作,有条件的一定要实习。不仅是作为一份背书,而且在秋招面试的时候,面试官才不会陷入无话可聊,只能用八股算法填满面试时间的情况。先想好实习的目的是什么?实习的目的无外乎两个一是转正,二是背书。 + +### **关于转正率** + +按往年来说转正率比较高的应该是阿里系,但我那一年阿里云出了点问题,不仅转正结果出的晚,而且转正率相比往年大大降低,但据了解,淘天的转正率还可以。注意字节和腾讯的转正率相对较低,美团,pdd的转正甚至不需要转正答辩,只需要提交自评,leader同意即可,所以美团pdd的转正率很高,蚂蚁pdd接近百分之百。如果想求稳,推荐美团蚂蚁,背书也不错,至少拿美团蚂蚁秋招面试是平分项。如果能接受pdd,也可去pdd,今年转正基本都开了很高的薪资,而且18薪,钱还是很多的。 + +### **关于实习背书** + +我个人认为背书会比转正率重要一些,因为目前的形势属实一般,前面也说了腾讯字节的转正率比较低,甚至我感觉秋招的hc数量会比能够转正的实习hc要多,所以拿个背书好的实习,秋招多面多投,结果不会差的。举个例子:字节今年的能够转正暑期实习hc巨少,而且目前的实习往往需要6个月,甚至一年。面试的时候甚至会问能够实习多久,如果只能实习三个月,可能直接被刷。什么叫背书好?title:大厂核心部门>中厂核心部门>大厂非核心>中厂非核心>其他。 + +首先定义什么是大厂,我认为只有BAT御三家称得上大厂,只有他们三家业务很广,横跨多个领域,其他公司例如美团在本地生活,外卖上发力,快手短视频,pdd电商,小红书社区,业务稍微单一了一些。什么是核心部门?首先判断是否盈利,二判断他们在各家的定位。 + +我这边给出一些核心部门供参考: + +**腾讯**:WXG(微信事业群,注意今年没有秋招,只有实习转正),IEG天美光子(游戏业务),TEG部分(基础技术)。 + +**字节**:AML(机器学习和算法,包括 AI infra),Tik Tok,抖音,搜广推等。 + +**阿里**:阿里云(ECS,PolarDB,各种存储包括OSS,SLS等等),淘天阿里妈妈,淘宝首猜,蚂蚁,达摩院等。 + +**美团**:到店,到家。百度:凤巢,大搜。 + +**快手**:搜广推。 + +**非核心举例**:腾讯的pcg(qq),csig部分(云业务);阿里的淘宝买菜、菜鸟、飞猪;字节的飞书等等。 + +这边提一下特殊的两家:华为实习会比较晚出结果,而且没有转正,但秋招面试有直通主管面的机会。pdd今年所有实习生都被分配到了temu做海外,按照它们的力度,估计明年可能也是一样,但做海外也不差就是了。 + +找不到实习怎么办?这边有个很关键的问题,暑期实习还是很卷的,尤其是三个月能转正的暑期实习。那如果最后还是找不到或者导师不放,怎么办?试着找日常实习:这里有个误区,大家看到实习要求上写至少需要5个月or 6个月实习,大家可能就不敢投,但事实上,你提前离职没有人会管,只是可能会不能转正而已。但如果都找不到实习了,这个时候就别挑了。另外在技术面和hr面的时候,不要说导师只放三个月。 +导师不放:请报名参加 [google summer of code](https://summerofcode.withgoogle.com/)(这个会比较难),[中科院开源之夏](https://summer-ospp.ac.cn/),我认为含金量还是很不错的,同时也有钱拿,做完都有一万块左右(需要申请,通过之后才能做)。找项目做,这个后面我也会写文章推荐一下项目。 + +实习转正的评价指标,同时也是转正开奖的评价指标:HC(招聘人头数Headcount) > 背景(学历等)≈ 面评 > 转正答辩 > 实习产出。因为实习时间很短,入职之后还需要熟悉环境阅读文档,而且做的事也可能比较琐碎和边边角角,所以大家的产出其实都差不多(大佬除外),这个时候,决定性的因素其实是HC,HC足够,大家都能转正,不够,就会从背景,面评等各方面综合考虑了。 + +### **关于一些重要时间节点和相应计划:** + +下面时间节点按照25届毕业生,如果你是其他届的学弟学妹,请自行推算。 + +**2023年x月-2024年3月:两个任务,做项目,写算法题Leetcode。** + +选什么项目做:不要做重复的项目,即使是导师的项目,也请把多个相同方向的项目写到一个里面。建议每个项目主打一个方向:比如一个数据库,一个操作系统,一个后端,一个网络。做完项目之后,请做个总结,因为最后,需要写到简历上,那么就要考虑,这个项目的哪些内容可以写到简历上,如何通过简历上的内容引导面试官提问。如何写一份简历,如何面试,这个后面可能我也会总结一下。 + +怎么写算法题:首先要清楚,笔试的算法题难度和面试不一样,笔试会比较难一些,而面试的算法题基本上都是高频题。要应付面试,做好LeetCode前200道,剑指offer,以及[面试高频题](https://codetop.cc/home)。这里的做好,指的是任何时候拿到都要会做,所以记住,如果算法能力不行,请反复做高频题(不是说记题,而是理解的情况下能够快速做出)。面试做题和在下面做题完全不一样,想象一下,有人盯着摄像头看着你做题,加上时间限制,会不会紧张。如何学习算法题,这个很多大佬都写过文章了,我觉得都还行,入门之后,刷题+记住反复做高频题应该都没问题。另外,建议在找实习的时候,就打好算法基础,因为实习的时候很可能没什么精力继续做算法题,那个时候保持手感罢了。 + +**2024年2月-2024年5月:面试高峰期。** + +2月中旬的时候,阿里云很多部门可能就开始面试了,这个面试记录不进面评系统,仅留存在部门自己手里,要等实习面试系统开了之后才会进去。这就意味着,你可以同时面多个部门,最后选择一个最有希望,面的最好的进系统,建议抓住这个机会多面试,多锻炼面试经验。另外可以用来刷面试经验,一般来说,第一次面试一般都很紧张,表现都不会太好。据我所知,甚至有同学面了七八个部门。我也面了4个部门,除了一个部门第一次面试完全没经验之外,其他均通过了三面。但这个后果就是导致很多部门养鱼严重,池子巨大。34月的时候其他几家陆续开了,也就没有这样的机会了,它们只能同一时间面一个部门,俗称锁简历,就是你如果在某个部门面试的流程中,其他部门是看不到你的简历的,所以有HR联系方式的话建议多催催,但部门那边很有可能养鱼,毕竟部门那边想优中选优。 + +**2024年6月-2024年9月:实习+秋招。** + +建议早点去实习,因为秋招一般七月中旬陆续就开了,边实习边秋招挺折磨的。前面也说了,关系实习转正的决定性因素其实是HC,所以表现正常的情况下,抽些时间看看面经,上班的时候出去面试都是没关系的,mentor也懂。 + +**2024年9月下旬-2024年11月:等待开奖。** + +这个时候就很折磨了,各家面试池子都足够大,面试也都面完了,意向却要拖个两三周,转正结果也可能迟迟不出,甚至最后来个惊喜,告诉你转正不过,开奖更是折磨,一家更比一家晚。安心等待,总会有好结果的。 + +## 关于算法题 + +### **1. 算法题重不重要,需要做到什么程度?** + +面试手撕的算法题基本上都是高频题,做好LeetCode前200道,以及剑指offer的题目基本上就能应付面试了。这里的做好指的是拿到题目可以在15-20min内bug-free通过,要做到这一点需要反复刷高频题。记住面试和平时做题是完全不一样的,面试的时候面试官可能就开着摄像头一直看着你(虽然他可能是在切屏做其他的事情,但是还是会有压力)。**面试的时候手撕算法不通过是大概率被一票否决的。** + +[高频题的网站](https://codetop.cc/home),LeetCode Hot 100,剑指Offer现在直接搜索好像出不来了,现在要在LeetCode里面搜LCR才行,或者直接通过搜索引擎搜索 “[LeetCode 剑指Offer](https://blog.csdn.net/weixin\_43840280/article/details/119447204)” + +笔试的算法题没有那么重要,一般不要太差就行;大厂似乎不是很看重笔试成绩(因为客观上笔试有作弊的可能,作弊代价也比较低)。除了阿里硬性要求笔试成绩60分,如果不达60分很有可能会被一票否决。即使有面试机会也可能被HR judge,需要补做一次笔试。阿里的笔试也是比较难一些,比较灵活。 + +**笔试的成绩对面评有影响吗?**这个事情就见仁见智了,当然是笔试成绩越高越好,但似乎跟最后的评级关系不大,还是面评、背景更重要。只有华为会稍微看重一点笔试成绩。 + +**2. 只学过数据结构,零基础如何刷LeetCode?** + +首先,需要去学一下STL的基础用法,掌握常见的如数组、堆、栈的API即可。 + +然后,去网上随便找个分类的题单,比如 [代码随想录](https://programmercarl.com/),开始刷题。 + +**怎么刷?** + +你需要明白,学习是一个**通过模仿,然后触类旁通的过程。** + +所以,看到新的题目不会很正常,尤其是在刷题的早期,每个题目给自己5-10min的思考时间,如果没有思路,就直接看题解。 + +**题解怎么看?** + +我的建议是不要看网上整理好的题解(比如代码随想录,把它看做分类题单即可),直接看LeetCode的评论区和题解区,这样对于同一个题目可以看到不同的思考,快速地看两篇题解,然后选择质量最高,自己最容易理解的。**不要照抄代码!看懂思路后自己重新写一遍。** + +题解里面 [灵茶山艾府](https://leetcode.cn/u/endlesscheng/) 质量很高,他对每日一题,周赛都会有题解,一些题单的总结也非常好。 + +面试高频题,每个题目重复写,不是说短时间内重复写,而是隔一段时间把高频题写一遍,保证拿到题目的第一时间就有思路。不要刻意记答案记代码!高频题写到最后可能每题都要写个3-4遍的。(类似艾宾浩斯遗忘曲线的思路,当然不用做到那么精确) + +**3. 面试手撕算法小技巧** + +**4. 算法进阶** + +基本上做到以上所说的应付常规面试没啥大问题,如果希望能面对笔试题、一些量化的笔面、面试偶尔出现的新题Hard题目游刃有余,或者发现自己对算法题比较喜欢,下面是一些进阶思路。 diff --git a/src/experience/internet/backend/index.md b/src/experience/internet/backend/index.md new file mode 100644 index 0000000..7f60e3c --- /dev/null +++ b/src/experience/internet/backend/index.md @@ -0,0 +1 @@ +# 后端开发 diff --git a/src/experience/internet/backend/java.md b/src/experience/internet/backend/java.md new file mode 100644 index 0000000..ec5a6e9 --- /dev/null +++ b/src/experience/internet/backend/java.md @@ -0,0 +1,32 @@ +# JAVA后台开发 + +这篇的作者本人是2024届复旦计算机硕士毕业生,从事的是JAVA后端开发方向。去年拿到了腾讯、蚂蚁、快手、字节、美团、京东、得物、小红书的Offer(滴滴、百度、淘天因为投递的有点晚,要么错过笔试,要么后面不想再面了),腾讯、蚂蚁和快手是SSP,其他的也基本全是SP。 +具体可以参考这位学长的[牛客网](https://www.nowcoder.com/users/98411722),还有许多的面经可以参考。 + +由于我在九月份的时候想试试国企管培生,所以实际上互联网秋招也就从八月下到九月下就结束了,并且不少时间花在了国企的行测上准备,事实上准备互联网的时间不是很充足。之所以能够拿到这么多offer,运气好是一方面,另一方面也是之前在面暑期实习的时候准备得比较充分。个人认为最需要准备的有三个方面:八股文+项目+算法。JAVA岗位的hc很多,但相应的竞争的人也是非常多,近年来面试的难度也是在不断提升,所以一定要做好充足的准备。 + +目前八股文有关Java的部分比较建议是在JavaGuide上进行学习,关于计算机基础的部分很推荐小林coding上学习,写得很详细。 + +## Java基础 + +重点复习Java的核心概念,如面向对象编程、集合框架、多线程、IO流等,需要确保对这些知识点有扎实的理解。最好能够结合源码来进行学习,比如HashMap的put方法具体实现流程?具体来说可以包含以下几个方面:Java语言基础、集合框架、并发编程、IO、JVM调优、JDK关键版本间的差别等。学习Java基础的时候,最好能够结合一些真实的代码来辅助理解,单纯看原理的话不太能够理解而且不便于记忆。 + +## 数据库 + +数据库其实问的内容是比较常见的,但是可能会问的比较深,所以在学习的时候需要深入学习,然后重点学习常考的内容。具体来说主要包含以下几个方面:存储引擎、索引、undo/redo/bin log的作用、事务、锁和优化方法。其中事务是问的最多的部分,比如事务的隔离级别,以及如何实现的,这块儿很可能会问到底层的实现原理。具体来说,针对这些原理,不需要实际去实践,尝试结合现象进行理解就好了。此外,数据库相关的可能会提到sql代码题,这个时候就需要适当的刷一刷相关的算法题。 + +## 计算机基础 + +计算机基础相关知识点主要是问计算机网络+操作系统,其中计算机网络问的更多,因为是与业务开发密切相关的知识点。具体来说主要包含以下几个方面:网络模型、常见的网络协议、网络安全以及网络设备。其中常见的网络协议问的最多,而这其中又是以HTTP、TCP和IP问的最多。此外,也还会常问在网页上输入网站地址后到页面加载出来经历了哪些流程,这些流程又涉及了哪些协议,在这个流程中协议的作用是什么?操作系统虽然并不是很常问,但是一旦问到就会是那种比较不太常见的那种,很容易完全没印象。所以在学习操作系统相关八股文的时候,需要最好是多看几遍,并且看的范围要广一些。具体来说主要包含以下几个方面:进程和线程、内存管理、文件系统、I/O系统以及Shell相关的场景命令。这些一般来说不是很好记,所以最好是多多复习,然后多看看面经,学习面经中问到的问题要怎么回答,多多积累就好。 + +## 中间件 + +中间件近年来问的越来越详细,问的也越来越深入。根据功能将中间件分为消息中间件、应用服务器中间件和数据库中间件等不同种类。一般主要需要学习消息队列中间件:如RabbitMQ、Apache Kafka,用于实现异步通信和解耦。反向代理中间件:如Nginx,用于负载均衡和反向代理。缓存中间件:如Redis,用于缓存数据,提高系统性能。RPC中间件: 如Dubbo、gRPC,用于实现远程过程调用。这其中缓存中间件考察的比较多,尤其是以Redis为代表,需要重点复习。此外,需要知道同类型中间件的不同优劣势,进行横向对比,以便在后续可能会问到的场景题中进行合理选型。 + +## 框架 + +这里的框架指的是Spring和SpringBoot,尤其是Spring问的比较多。Spring主要会问的模块包括:控制反转(IoC)和依赖注入(DI),通过容器管理对象之间的依赖关系。切面编程(AOP):实现横切关注点的模块化。数据访问支持:提供了对JDBC、ORM框架(如Hibernate)、NoSQL数据库的支持。事务管理:提供声明式事务管理的支持。MVC框架:提供了基于MVC的Web应用程序开发支持。SpringBoot问的一般主要是相较于Spring的优化提升,以及这两者间的区别。 + +## 场景题 + +这里的场景题主要是指的高可用以及高并发的相关场景设计,是比较综合的题目,主要设计一些中间件和架构思考,准备这类题目需要多多积累相关场景题。而且 这类场景题多数是与分布式相关的,包括分布式场景设计原则、分布式数据存储、分布式事务处理以及服务治理与负载均衡等方面都需要考虑到。 diff --git a/src/experience/internet/frontend/index.md b/src/experience/internet/frontend/index.md new file mode 100644 index 0000000..be3d95c --- /dev/null +++ b/src/experience/internet/frontend/index.md @@ -0,0 +1 @@ +# 前端开发 diff --git a/src/experience/internet/frontend/js.md b/src/experience/internet/frontend/js.md new file mode 100644 index 0000000..e69de29 diff --git a/src/experience/internet/frontend/ts.md b/src/experience/internet/frontend/ts.md new file mode 100644 index 0000000..e69de29 diff --git a/src/experience/internet/index.md b/src/experience/internet/index.md new file mode 100644 index 0000000..9cb705b --- /dev/null +++ b/src/experience/internet/index.md @@ -0,0 +1 @@ +## 互联网 diff --git a/src/experience/internet/product/index.md b/src/experience/internet/product/index.md new file mode 100644 index 0000000..910a426 --- /dev/null +++ b/src/experience/internet/product/index.md @@ -0,0 +1,61 @@ +### 产品经理 + +本篇内容整理自编者对佩奇(化名)的采访录音。佩奇是一位985本科、港三硕士的2023年cs科班毕业生,目前在一家互联网大厂担任产品经理。编者整理了其中与求职经验相关的部分内容,并以第一人称的形式呈现。 + +#### 准备 + +首先,如果你和我一样是计算机相关背景的同学,或者来自其他背景但想转行做产品经理,又不知道从何下手的话,我的个人建议是,如果时间充裕,最好是先去找一个创业方向的项目,组建一个团队并推动它完成,比如参加一些创业的比赛之类的去完成这个事情。为什么这么说呢?因为我在面试时发现,面试官最看重的一点是,你是否有创业经历,或者是否有带领团队完成项目的经验,最好是跟软件或互联网有关,如果无关,那你组建一个二手交易团队之类的项目也ok。因为其实产品经理最重要的能力就是你能把团队拉起来,然后让大家跟着你去干事情。在我的求职过程中,我注意到简历上大家都在写自己的实习经历。但其实如果你有创业的经历,面试官通常会更喜欢。 + +另外一个重要的准备就是提前实习,多实习几家,多去找大厂的产品实习(小公司的产品实习感觉不如创业项目重要),尤其是秋招前的那个暑期实习,大概3,4月份就要开始找,如果暑期实习表现的还不错的话,会有留用的HC,那你就可以拿到一个转正的offer。秋招的时候就会相对没有那么大的心理压力。另外一方面,是大厂实习会给你带来一些靠谱的项目经历,可以在秋招面试的时候讲,会很有帮助。还有一点,多实习可以让你体验到不同的公司的不同的岗位,然后去找到你到底喜欢什么工作环境,这非常重要! + +如果你的时间不够,且不足以做以上这些准备,在没有产品经理相关的背景下,我的建议是,首先要了解一下产品经理到底是做什么的。你只需要对产品经理的工作内容有一个基本的了解就行。因为我之前也去网上查阅了很多资料,也跟很多同学聊天交流过。我参加了不少面试,发现其实面试的时候,考官并不会非常严格地考察你的产品经理专业能力,更多的是考察你的软性实力。比如说你的沟通能力,你能不能和别人很好地沟通,能不能把事情讲清楚讲明白;再比如你的逻辑思维能力是否过关,是否有一些很好的创意并能够付诸实践等等。 + +如果你真的想做产品经理,用有限的时间去打磨或者包装这些软性技能可能比去学一个PMP或者项目管理课程更重要。很多人可能会去网上找一些产品经理的项目来包装自己,但我觉得这种做法并不好。 + +#### 实习转正小技巧 + +当初暑期实习时,我把所有的赌注都压在了这份实习上,因为身边的人都说有转正的机会,所以我没有考虑其他实习机会,也没有提前参加秋招的提前批。很多人都提到,大厂的实习至关重要,尤其是暑期的三到四月份,这是一个关键时间段。大厂的提前批通常启动得比较早,可能在三到五月份就已经开始,到了六七月份更是如此。秋招的实习机会通常在六七月份就已经出现了,如果你能赶上第一批投简历,机会就会大大增加。虽然有“金三银四、金九银十”的说法,但在大厂,这个时间节点可能会稍微提前一点。 + +当时我没有投其他简历,因为转正通知的时间相对较晚,等到8月中旬才通知。这就带来了一个问题:当我收到转正通知时,秋招的提前批已经结束了。此外,在等待转正结果的过程中,我感到非常痛苦,几乎每天都带着痛苦的面具去上班。后来,我和一些同事交流时,他们告诉了我一个非常有用的小技巧。 + +如果你在哪个公司实习,并且觉得这个地方无法转正,或者想换个部门的话,你要抓紧利用公司内部的通讯工具,私聊其他组的面试官,或者找相关的同学帮忙打听情况。比如说,你的同学在其他组工作,可以请他帮忙问问,看看其他组有没有缺人的情况。如果有机会,你就可以尝试转过去,哪怕不面试也可以去了解一下情况。 + +当时,我也是动用了各种人脉,包括之前给我模拟面试的面委会的面试官。我私聊了他,说“你好,你还记得我吗?之前我在面试中跟你聊过。”然后他回答说记得我。我就继续说,我这边可能转正有一些问题,问他那边有没有相关的组缺人,我想再试一下。这样他就给了我一次机会,让我去尝试面试其他组。 + +另外,我还找了我的研究生同学,他是技术岗的,我请他帮忙问一下对应的产品部门有没有招人。同样,我找了本科同学,他在其他部门工作,也是技术岗的,让他也帮忙问问相关部门有没有招人。 + +总之,如果你在实习的这条路上遇到瓶颈,不妨主动一些,去找其他路径,看看能不能让你的路走得更好。要迈出这一步,主动去试一下,就会有机会。 + +其实很多理工科的同学,包括我在内,都不太主动,特别是非技术岗的同学更是如此。但如果有人告诉你这条路是可行的,我觉得你应该尝试一下,毕竟尝试一下总有可能成功,如果你不试,那肯定就失败了。尤其是非技术岗的同学,一定要主动一点,机会就在你主动迈出的那一步中。 + +#### 秋招经验 + +**坚持海投:** + +一定要多投简历,我的建议是每周保持一定的节奏,大概投15个公司左右,涵盖15到20个岗位。第一周投简历,第二周就会有笔试和测评,然后顺利的话,第三周可能就会有面试。不顺利的话,面试的时间可能会不确定,需要耐心等待。 + +我当时前前后后总共投了大概有100多个岗位,并用飞书文档做了一个记录。我也建议大家,如果你真的全身心地投入找工作,可以用一些文档工具记录下你投了哪些公司、哪些岗位,以及每个岗位的进展情况。这样至少可以帮助你掌握整个节奏。 + +最终,我大概参加了30到40场笔试,包括测评等内容。而面试的数量大概在二三十场左右。其中有一半的面试在一面的时候就被淘汰了,剩下的一半如果二面顺利的话,通常二面三面都能通过。总之,我陆陆续续地面试了很多公司。这样能收获很多机会,也能高频率的去训练我们应对面试的能力。 + +**笔试部分:** + +笔试主要就是综合测评,比较类似公务员考试的行测,反正网上有题库,自己多做一做就妥了 + +**面试部分:** + +在面试过程中,最最重要的一点是自我介绍。一定要把自我介绍讲清楚。如果你的经历比较多,只需要挑两个重点来说,比如说你的一段校园经历。把这段经历讲清楚,并且适当地给面试官“挖坑”。比如,我在面试时会提到“我组建了一个团队,做了一个三人小团队的项目。”这时,面试官可能会问你团队里有哪些成员、项目是如何进行的、最终达到了什么样的结果。要把这些事情讲清楚,可以考虑使用 STAR 法则。 + +STAR法则是情境(situation)、任务(task)、行动(action)、结果(result)四项的缩写。按这样的结构讲面试官听起来会比较清晰。此外,自我介绍一定不要太长,只需讲你做得比较好的几件事就行了。通常,面试官会根据你的自我介绍问一些相关问题,比如你在这段经历中做了什么,遇到了哪些困难,又是如何解决的。他们可能还会根据你的回答,进一步问一些细节,看看这些经历是否真的是你亲身经历的。如果你在简历或自我介绍中过度包装或者存在欺骗行为,那很有可能会直接被淘汰。 + +所以,第一,自我介绍和简历包装不要过度,真实才是最重要的。第二,自己做过的事情一定要能够讲清楚。如果你真的想不起来,就坦诚地说“对不起,时间太久了,我忘了。”千万不要编故事,因为编的东西很容易被识破,导致失败。另外一个重要的点是,面试时自我介绍完了之后,面试官就会对你有一个初步的印象。如果你自我介绍得不好,可能面试官就只会简单聊两句,然后直接挂掉。如果表现不错,面试官才会有兴趣继续深入了解。 + +面试的流程一般是:第一,自我介绍;第二,根据自我介绍问问题;第三,可能会问一些产品经理的基础概念,比如“你知道产品经理的主要职责是什么吗?”“你更喜欢做 B 端产品经理还是 C 端产品经理?为什么?” 面试官还可能会考察你的综合能力,比如根据你的简历问你在学校担任学生会主席的原因,这些问题你都要提前准备好,尽量讲清楚。 + +我的经验是,面试官往往更关注你在自我介绍中提到的项目经历、社工经历,以及你对产品经理的基本了解。特别是在讨论实习经历时,面试官通常会通过询问你参与过的项目,来判断你的实习是否“靠谱”。他们可能会问你在实习期间做了什么项目,你在项目中具体负责什么,遇到了哪些困难,以及你是如何解决这些问题的。 + +对于初级面试者来说,可能不太注意自己在项目中遇到过什么困难,或者不知道自己是怎么解决问题的,只知道项目最终完成了。但这两个问题是非常核心的,一定要注意,只要能把这两个问题回答好,你的面试就成功了一半。 + +他们并不在意你做的事情规模有多大,而是看你是否能清晰地表达。作为实习生,面试官通常认为你所做的事情就是一些基础工作,所以不要把自己的经历包装得太过宏大,这样反而会适得其反。保持真诚和坦诚的沟通非常重要。 + +实际上,在我面试的前期,我还比较“装”,但到后来当我拿到一些 offer 或者感觉自己有把握时,反而变得随意了,往往这样的表现反而效果更好。面试其实并不是一个一板一眼的考试过程,更强调的是你与面试官之间的互动。有时候,你的精神状态和热情特质会影响面试官的判断。即使回答得不够完美,只要面试官在与你的互动中感到愉快,也有可能让你通过面试。