Preheat the oven to 350°F (175°C).
Grease two 9-inch round cake pans and line the bottoms with parchment paper.
In a medium bowl, whisk together flour, baking powder, baking soda, and salt.
In a large bowl, beat softened butter, vegetable oil, and sugar for 3–4 minutes, until light and fluffy.
Add the eggs one at a time, mixing well after each addition.
Stir in the vanilla extract.
Add one-third of the dry ingredients and mix gently.
Add half of the buttermilk and milk mixture.
Repeat with another third of the dry ingredients, followed by the remaining milk mixture.
Add the remaining dry ingredients and mix just until combined. Do not overmix.
Divide the batter evenly between the prepared cake pans.
Smooth the tops with a spatula.
Bake for 28–33 minutes, or until a toothpick inserted in the center comes out clean or with a few moist crumbs.
Let the cakes cool in the pans for 10 minutes.
Carefully remove the cakes and transfer them to a wire rack to cool completely.
To make the frosting, beat softened butter until smooth and creamy.
Gradually add powdered sugar, mixing on low speed.
Add vanilla extract and salt.
Slowly add heavy cream or milk until the frosting reaches a smooth, spreadable consistency.
Beat the frosting on medium-high speed for 2–3 minutes, until light and fluffy.
Place one cooled cake layer on a serving plate.
Spread a generous layer of vanilla buttercream over the top.
Place the second cake layer on top.
Frost the top and sides of the cake with the remaining buttercream.
Decorate with sprinkles, berries, piped frosting, or other toppings if desired.
Slice and serve